輸入框占位符placeholder


占位符placeholder的益處不用多說,但是很不幸的是,在IE8之前的瀏覽器里是無法實現placeholder這一屬性的,所以在需要兼容IE8之前的瀏覽器的情況下,我們不得不想辦法模擬實現placeholder屬性。

在前面的一篇文中《獲取表單的初始值,模擬placeholder屬性》中,就曾經講過placeholder屬性的模擬,這里再翻出來一遍,是因為又遇到了新的問題。

當輸入值之后,再刷新頁面,在火狐瀏覽器中,獲取到的defaultValue會是新的輸入值。

直接以之前的項目中一小段代碼為例:

    <ul class="query-box">
        <li><input type="text" value="請輸入8位准考證號" placeholder="請輸入8位准考證號" tabindex="1"></li>
        <li class="img-verification">
          <input type="text" value="請輸入驗證碼" placeholder="請輸入驗證碼" tabindex="2">
          <div><img src="images/logo.png" alt=""></div>
        </li>
        <li>
          <button tabindex="3">查詢</button>
        </li>
      </ul>

該項目需要兼容到IE8,所以這里就必須解決IE8不支持placeholder這一屬性的問題。項目中使用了jquery。

最開始的想法,就是使用初始值的方法,但是在火狐瀏覽器中測試時,發現了bug,當輸入值之后,再刷新頁面,火狐瀏覽器會記住所輸入的值,作為初始值,導致不能完全模擬placeholder。只能轉換方向,還是直接使用jquery方法來解決吧!

   var permissionNum = /^\d{8}$/; 
  $(".query-box").find("input[type=text]").each(function (index, item) {
        var defaultVal = $(this).prop('placeholder');
        $(this).on("focus keydown", function () {
          var val = $(this).val();
          if (val == defaultVal) {
            $(this).val("").css("color", "#448aca");
          }
        }).on("blur keyup", function () {
          var val = $(this).val();
          if (val == "") {
            $(this).val(defaultVal).css("color", "#bababa");
          }
          // 校驗准考證號碼,符合8位數字,就高亮查詢按鈕
          if (index == 0) {
            var $target = $(this).parents(".query-box").find("button");
            permissionNum.test(val) ? $target.addClass("active") : $target.removeClass("active");
          }
        })
      });

  

也沒有什么高深的東西,只要能轉過這個彎來就可以了!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM