HTML5 INPUT placeholder及兼容性處理_XHTML教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!
        HTML5對Web Form做了許多增強,比如input新增的type類型、Form Validation等。Placeholder是HTML5新增的另一個屬性,當input或者textarea設置了該屬性后,該值的內容將作為灰字提示顯示在文本框中,當文本框獲得焦點時,提示文字消失。以前要實現這效果都是用JavaScript來控制才能實現: 

      由于placeholder是個新增屬性,目前只有少數瀏覽器支持,如何檢測瀏覽器是否支持它呢?(更多HTML5/CSS3特性檢測可以訪問)

      function hasPlaceholderSupport() {
        return 'placeholder' in document.createElement('input');
      }

      默認提示文字是灰色的,可以通過CSS來改變文字樣式:

       
      /* all */
      ::-webkit-input-placeholder { color:#f00; }
      input:-moz-placeholder { color:#f00; }
       
      /* individual: webkit */
      #field2::-webkit-input-placeholder { color:#00f; }
      #field3::-webkit-input-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }
      #field4::-webkit-input-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }
       
      /* individual: mozilla */
      #field2:-moz-placeholder { color:#00f; }
      #field3:-moz-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }
      #field4:-moz-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }
      

       

      兼容其他不支持placeholder的瀏覽器:

      var PlaceHolder = {
          _support: (function() {
              return 'placeholder' in document.createElement('input');
          })(),

          //提示文字的樣式,需要在頁面中其他位置定義
          className: 'abc',

          init: function() {
              if (!PlaceHolder._support) {
                  //未對textarea處理,需要的自己加上
                  var inputs = document.getElementsByTagName('input');
                  PlaceHolder.create(inputs);
              }
          },

          create: function(inputs) {
              var input;
              if (!inputs.length) {
                  inputs = [inputs];
              }
              for (var i = 0, length = inputs.length; i <length; i++) {
                  input = inputs[i];
                  if (!PlaceHolder._support && input.attributes && input.attributes.placeholder) {
                      PlaceHolder._setValue(input);
                      input.addEventListener('focus', function(e) {
                          if (this.value === this.attributes.placeholder.nodeValue) {
                              this.value = '';
                              this.className = '';
                          }
                      }, false);
                      input.addEventListener('blur', function(e) {
                          if (this.value === '') {
                              PlaceHolder._setValue(this);
                          }
                      }, false);
                  }
              }
          },

          _setValue: function(input) {
              input.value = input.attributes.placeholder.nodeValue;
              input.className = PlaceHolder.className;
          }
      };

      //頁面初始化時對所有input做初始化
      //PlaceHolder.init();
      //或者單獨設置某個元素
      //PlaceHolder.create(document.getElementById('t1'));

      來源:cnblogs//所屬分類:XHTML教程/更新時間:2012-08-12
      相關XHTML教程