onpropertychange替代方案
onpropertychange替代方案
1.onpropertychange的介紹
onpropertychange事件就是property(屬性)change(改變)的時(shí)候,觸發(fā)事件。
這是IE專有的!
如果想兼容其它瀏覽器,有個(gè)類似的事件,oninput!
可能大家會想到另外一個(gè)事件:onchange。
但是,onchange有兩個(gè)弊端。
一、就是它在觸發(fā)對象失去焦點(diǎn)時(shí),才觸發(fā)onchange事件。
二、如果得用javascript改變觸發(fā)對象的屬性時(shí),并不能觸發(fā)onchange事件,oninput也有這個(gè)問題。
onpropertychange會在設(shè)置disable=true的時(shí)候失效。而且,onpropertychange是在觸發(fā)對象改變?nèi)魏螌傩詴r(shí)都會觸發(fā)。而oninput只是在改變input的value值時(shí)才觸發(fā)。
oninput 事件:不但JS 改變 value 值時(shí)不能觸發(fā),有從瀏覽器的自動下拉提示中選值時(shí),也不會觸發(fā)。
onpropertychange觸發(fā)函數(shù)只有一個(gè)默認(rèn)參數(shù),是所以可以觸發(fā)屬性的集合
2.onclick,onchange替代onpropertychange,但是都有一定的弊端
3.當(dāng)遇到 input type=“hidden” ,有熟知的兩種方法。
(1)使用js,手動觸發(fā),例如trigger,或者在改變的后面跟一個(gè)要觸發(fā)的方法
(2)使用定時(shí)器,當(dāng)場景比較復(fù)雜的時(shí)候使用,但也存一定的弊端
<input type="hidden" name="nba" id="nba" value="<%=nba %>" class="changeData" changeFunc=change("nba") tempVal=""> <input type="hidden" id="cba" name="cba" value="<%=cba %>" class="changeData" changeFunc=change("cba") tempVal=""> setInterval("monitorChange()",1000); function monitorChange(){$(".changeData").each(function () {var changeFunc = $(this).attr("changeFunc");if (changeFunc) {var tempval = $(this).attr("tempVal");var val = $(this).val();if (tempval != val) {eval(changeFunc);}$(this).attr("tempVal", val);}})}4. 如果日期控件使用Wdatepicker97,可以使用onpicked和oncleared來替代onpropertychange
onClick="WdatePicker({minDate:'#F{$dp.$D(\'rq\')}',onpicked: function(){rq();},oncleared: function(){rq();}})"My97日期控件API
5.注意
input標(biāo)簽 onchange IE 8好像是不行的,
input不要用這個(gè)onchange ,其他的普通input場景一般用onblur
總結(jié)
以上是生活随笔為你收集整理的onpropertychange替代方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 构建XML
- 下一篇: jsp里面编写java代码注意加双引号