中文輸入法不觸發(fā)onkeyup事件的解決辦法
這兩天做一個(gè)需要實(shí)時(shí)監(jiān)控文本框輸入的功能,碰到了中文輸入法無法觸發(fā)onkeyup事件的惡心問題。
具體表現(xiàn)是這樣的:
當(dāng)監(jiān)聽一個(gè)input的keyup的事件的時(shí)候,英文輸入法的情況下可以實(shí)時(shí)的通過keyup事件檢測(cè)到文本框value的變化,但是當(dāng)輸入法變成中文后,input的keyup事件就不會(huì)被正常觸發(fā)。這是最先前的寫法。
<html>
<head>
<script type="text/javascript" src="http://chabaoo.cn/static/js/jquery-1.4.2.min.js"></script>
</head>
<body>
<p>
使用keyup事件檢測(cè)文本框內(nèi)容:
</p>
<p>
<input type="text" name="keyup_i" id="keyup_i" autocomplete="off"/>
<span id="keyup_s"></span>
<script type="text/javascript">
$('#keyup_i').bind('keyup', function(){
$('#keyup_s').text($(this).val());
})
</script>
</p>
</body>
</html>
如你所見,這樣的寫法遇到了中文不能觸發(fā)keyup事件的問題。于是尋求解決方法,想起來baidu的搜索欄提示似乎是沒有這個(gè)問題的,于是開始看百度的js。百度的js比較難看...方法命名凈是一個(gè)字母,最后發(fā)現(xiàn)大概是使用了timeout做一個(gè)定時(shí)器來定時(shí)監(jiān)測(cè)input框的修改。不是很滿意這樣的方法。于是繼續(xù)查找看有沒有更好的解決辦法,于是就找到了oninput和onpropertychange兩個(gè)事件。
oninput是firefox下面可用,而onpropertychange則是ie下可用。兩個(gè)方法有著一些區(qū)別。
oninput只能檢測(cè)到value這個(gè)屬性的變化,而onpropertychange則可以檢測(cè)到包含value的所有屬性的變化。于是開始改成這個(gè)樣子。
<html>
<head>
<script type="text/javascript" src="http://chabaoo.cn/static/js/jquery-1.4.2.min.js"></script>
</head>
<body>
<p>
使用oninput以及onpropertychange事件檢測(cè)文本框內(nèi)容:
</p>
<p>
<input type="text" name="inputorp_i" id="inputorp_i" autocomplete="off"/>
<span id="inputorp_s"></span>
<script type="text/javascript">
//先判斷瀏覽器是不是萬惡的IE,沒辦法,寫的東西也有IE使用者
var bind_name = 'input';
if (navigator.userAgent.indexOf("MSIE") != -1){
bind_name = 'propertychange';
}
$('#inputorp_i').bind(bind_name, function(){
$('#inputorp_s').text($(this).val());
})
</script>
</p>
</body>
</html>
問題這么被解決了。
相關(guān)文章
JavaScript DOM 學(xué)習(xí)第二章 編輯文本
在這一章我會(huì)給出一個(gè)在CMS里非常有用的更新頁面的代碼。在任一段落點(diǎn)擊鼠標(biāo)你就可以修改了。完成以后點(diǎn)擊按鈕,修改的文本就顯示了。2010-02-02
詳解JavaScript中g(shù)etFullYear()方法的使用
這篇文章主要介紹了詳解JavaScript中g(shù)etFullYear()方法的使用,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06
Javascript學(xué)習(xí)筆記之函數(shù)篇(四):arguments 對(duì)象
JavaScript中arguments函數(shù)對(duì)象是該對(duì)象代表正在執(zhí)行的函數(shù)和調(diào)用它的函數(shù)的參數(shù)。JavaScript 函數(shù)中 arguments 為特殊對(duì)象,無需明確指出參數(shù)名,就能訪問它們。2014-11-11
JS中for循序中延遲加載動(dòng)態(tài)效果的具體實(shí)現(xiàn)
今天在做一個(gè)前端的效果的時(shí)候碰到一個(gè)棘手的問題,就是實(shí)現(xiàn)一個(gè)動(dòng)態(tài)的圓柱效果,廢話不多少,直接上代碼2013-08-08
全選復(fù)選框JavaScript編寫小結(jié)(附代碼)
這篇文章主要介紹了全選”復(fù)選框JavaScript編寫,分別附上html和js代碼以供大家更深刻了解,具體操作步驟大家可查看下文的詳細(xì)講解,感興趣的小伙伴們可以參考一下。2017-08-08
對(duì)Js OOP編程 創(chuàng)建對(duì)象的一些全面理解
下面小編就為大家?guī)硪黄獙?duì)Js OOP編程 創(chuàng)建對(duì)象的一些全面理解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07
JS 實(shí)現(xiàn)計(jì)算器詳解及實(shí)例代碼(一)
這篇文章主要介紹了JS 實(shí)現(xiàn)計(jì)算器詳解及實(shí)例代碼的相關(guān)資料,這里對(duì)實(shí)現(xiàn)計(jì)算器的思路及實(shí)現(xiàn)步驟進(jìn)行了一一詳解,需要的朋友可以參考下2017-01-01

