文本框内容改变触发事件
input 在IE中有onchange事件,但是這個(gè)事件所表現(xiàn)的效果不是我們想要的,它所表現(xiàn)的效果為:當(dāng)input內(nèi)的內(nèi)容發(fā)現(xiàn)更改時(shí),并不會(huì)觸發(fā)你所指定的方法(函數(shù)),所以一般的人不用使用這個(gè)事件,而會(huì)使用,onpropertychange 這個(gè)事件,,在IE下是可行的。。但是在FF下面呢就不行了。。
于是我從網(wǎng)上找到如下代碼去解決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);??????????
???????? ?}
???? })
這個(gè)方法的原理就是先判斷是哪種瀏覽器,然后使用它們自帶的事件注冊(cè)方法去注冊(cè)事件。
這個(gè)方法有個(gè)問題,如果你要兼容N個(gè)瀏覽器的話那你不要是寫N個(gè)瀏覽器的注冊(cè)事件嗎?
于是又一個(gè)解決的方法出現(xiàn)了,,
它的原理很簡答,就是監(jiān)視鍵盤事件,每次獲取鍵盤事件時(shí),都會(huì)去判斷是否與前一次內(nèi)容是否相同,不相同就觸發(fā)相關(guān)方法(函數(shù))
代碼如下:
var txtValue;
???????
??????? ??? 預(yù)加載
??????? jQuery(function($) {
??????????? txtValue = $("#txtABC").val();
??????????? ??? 給txtbox綁定鍵盤事件
??????????? $("#txtABC").bind("keydown", function() {
??????????????? var currentValue = $(this).val();
??????????????? if (currentValue != txtValue) {
??????????????????? TxtChange();
??????????????????? txtValue = currentValue;
??????????????? }
??????????? });
??????? });
??????? //? 目標(biāo)選擇框文本發(fā)生更改時(shí)
??????? function TxtChange() {
??????????? alert('');??????????
??????? }
因?yàn)榇蟛糠譃g覽器都支持,keydown事件,所以這么寫可以兼容大部分瀏覽器。。
轉(zhuǎn)載于:https://www.cnblogs.com/glorysword/p/onInputContentChange.html
總結(jié)
以上是生活随笔為你收集整理的文本框内容改变触发事件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下Vim工具常用命令
- 下一篇: Fedora-19安装texlive20