在web開發中,咱們有時會須要動態監聽輸入框值的變化,當使用onkeydown、onkeypress、onkeyup做爲監聽事件時,會發現一些複製粘貼等操做用不了,同時,在處理組合快鍵鍵的時候也很麻煩。這時候咱們須要更專業的解決方案:HTML5標準事件oninput、onchange和IE專屬的事件properchange。javascript
propertychange 和 input 事件:html
1)propertychange只要當前對象的屬性發生改變就會觸發該事件java
2)input是標準的瀏覽器事件,通常應用於input元素,當input的value發生變化就會發生,不管是鍵盤輸入仍是鼠標黏貼的改變都能及時監聽到變化jquery
$(function(){ web
$('#username').bind('input propertychange', function() { ajax
$('#result').html($(this).val().length + ' characters'); 瀏覽器
}); this
}) es5
這裏bind同時綁定了input和propertychange兩個方法。spa
轉:http://www.codes51.com/article/detail_3922282.html
在 Web 開發中常常會碰到須要動態監聽輸入框值變化的狀況,若是使用 onkeydown、onkeypress、onkeyup 這個幾個鍵盤事件來監測的話,監聽不了右鍵的複製、剪貼和粘貼這些操做,處理組合快捷鍵也很麻煩。所以這篇文章向你們介紹一種完美的解決方案:結合 HTML5 標準事件 oninput 和 IE 專屬事件 onpropertychange 事件來監聽輸入框值變化。
oninput 是 HTML5 的標準事件,對於檢測 textarea, input:text, input:password 和 input:search 這幾個元素經過用戶界面發生的內容變化很是有用,在內容修改後當即被觸發,不像 onchange 事件須要失去焦點才觸發。oninput 事件在主流瀏覽器的兼容狀況以下:
從上面表格能夠看出,oninput 事件在 IE9 如下版本不支持,須要使用 IE 特有的 onpropertychange 事件替代,這個事件在用戶界面改變或者使用腳本直接修改內容兩種狀況下都會觸發,有如下幾種狀況:
在監聽到 onpropertychange 事件後,可使用 event 的 propertyName 屬性來獲取發生變化的屬性名稱。
集合 oninput & onpropertychange 監聽輸入框內容變化的示例代碼以下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<head>
<script type=
"text/javascript"
>
// Firefox, Google Chrome, Opera, Safari, Internet Explorer from version 9
function
OnInput (event) {
alert (
"The new content: "
+ event.target.value);
}
// Internet Explorer
function
OnPropChanged (event) {
if
(event.propertyName.toLowerCase () ==
"value"
) {
alert (
"The new content: "
+ event.srcElement.value);
}
}
</script>
</head>
<body>
Please modify the contents of the text field.
<input type=
"text"
oninput=
"OnInput (event)"
onpropertychange=
"OnPropChanged (event)"
value=
"Text field"
/>
</body>
|
使用 jQuery 庫的話,只須要同時綁定 oninput 和 onpropertychange 兩個事件就能夠了,示例代碼以下:
1
2
3
|
$(
'textarea'
).bind(
'input propertychange'
,
function
() {
$(
'.msg'
).html($(
this
).val().length +
' characters'
);
});
|
下面是 JsFiddle 在線演示,若是不能顯示請刷新一下頁面或者點擊後面的連接(http://jsfiddle.net/PVpZf/):