文本框內容改變觸發事件


input 在IE中有onchange事件,但是這個事件所表現的效果不是我們想要的,它所表現的效果為:當input內的內容發現更改時,並不會觸發你所指定的方法(函數),所以一般的人不用使用這個事件,而會使用,onpropertychange 這個事件,,在IE下是可行的。。但是在FF下面呢就不行了。。

於是我從網上找到如下代碼去解決FF下不行

jQuery(function($) {
         if (navigator.userAgent.indexOf("MSIE") > 0) {
              document.getElementById('txtABC').attachEvent("onpropertychange", txChange);
          }
          else if (navigator.userAgent.indexOf("Firefox") > 0) {
              document.getElementById('txtABC').addEventListener("input", txChange2, false);          

          }
     })

這個方法的原理就是先判斷是哪種瀏覽器,然后使用它們自帶的事件注冊方法去注冊事件。

這個方法有個問題,如果你要兼容N個瀏覽器的話那你不要是寫N個瀏覽器的注冊事件嗎?

於是又一個解決的方法出現了,,

它的原理很簡答,就是監視鍵盤事件,每次獲取鍵盤事件時,都會去判斷是否與前一次內容是否相同,不相同就觸發相關方法(函數)

代碼如下:

var txtValue;
       
        ////////    預加載
        jQuery(function($) {

            txtValue = $("#txtABC").val();

            ////////    給txtbox綁定鍵盤事件
            $("#txtABC").bind("keydown", function() {
                var currentValue = $(this).val();
                if (currentValue != txtValue) {
                    TxtChange();

                    txtValue = currentValue;
                }

            });

        });

        //////  目標選擇框文本發生更改時
        function TxtChange() {
            alert('');          
        }

因為大部分瀏覽器都支持,keydown事件,所以這么寫可以兼容大部分瀏覽器。。


免責聲明!

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



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