即時反應的input和propertychange方法

在web開發中,咱們有時會須要動態監聽輸入框值的變化,當使用onkeydown、onkeypress、onkeyup做爲監聽事件時,會發現一些複製粘貼等操做用不了,同時,在處理組合快鍵鍵的時候也很麻煩。這時候咱們須要更專業的解決方案:HTML5標準事件oninput、onchange和IE專屬的事件properchange。javascript

1.oninput&onchange:

oninput和onchange都是事件對象,當輸入框的值發生改變時觸發該事件。不一樣的是,oninput是在值改變時當即觸發,而onchange是在值改變後失去焦點才觸發,而且能夠用在非輸入框中,如:select等。
 

2.propertychange:

功能同oninput,用以替代oninput在IE9如下的不兼容性。
 

3.output:

output是一個HTML5標籤,IE系列瀏覽不兼容,主要用於計算輸出。如:

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 事件替代,這個事件在用戶界面改變或者使用腳本直接修改內容兩種狀況下都會觸發,有如下幾種狀況:

  • 修改了 input:checkbox 或者 input:radio 元素的選擇中狀態, checked 屬性發生變化。
  • 修改了 input:text 或者 textarea 元素的值,value 屬性發生變化。
  • 修改了 select 元素的選中項,selectedIndex 屬性發生變化。

  在監聽到 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/): 

相關文章
相關標籤/搜索