我們有時會需要動態(tài)監(jiān)聽輸入框值的變化,當使用onkeydown娄猫、onkeypress、onkeyup作為監(jiān)聽事件時月幌,會發(fā)現(xiàn)一些復(fù)制粘貼等操作用不了悬蔽。專業(yè)的解決方案:HTML5標準事件oninput、onchange和IE專屬的事件properchange录语。
1oninput和propertychange事件
input是標準的瀏覽器事件,一般應(yīng)用于input元素虽缕,當輸入框的值發(fā)生改變時觸發(fā)該事件蒲稳,無論是鍵盤輸入還是鼠標黏貼的改變都能及時監(jiān)聽到變化,重點是oninput是在值改變時立即觸發(fā)凭峡。
propertychange:功能同oninput,用以替代oninput在IE9以下的不兼容性摧冀。
2onchange事件
onchange是在值改變后失去焦點才觸發(fā)宗挥,并且可以用在非輸入框中俺夕,如:select等椒惨。
3最佳方案
input和propertychange一起使用
$(".order_discount_item input[type='number']").on("input propertychange", function () {
var modify = false;
var value = $(this).val().toString();
var inputName = $(this).attr("name");
// 全部虛擬貨幣只能輸入掙整數(shù)
if ((value.length > 0 && /^[1-9]\d{0,6}$/.test(value) == false)) {
value = value.substr(0, value.length - 1);
$(this).val(value);
return;
} else if (value.length > 0 && /^[0-9]{0,6}\.?[0-9]{0,2}$/.test(value) == false) {
value = value.substr(0, value.length - 1);
$(this).val(value);
return;
}