input根據(jù)實(shí)時輸入的值進(jìn)行內(nèi)容檢索是常見的業(yè)務(wù)場景衷咽,但使用change宫静,或者keypress等事件綁定在遇到復(fù)制粘貼的時候則不會觸發(fā)事件的發(fā)生口蝠,無法做到實(shí)時監(jiān)聽镣陕。解決的方法就是同時使用input propertychange事件進(jìn)行綁定。例:
$('input').on('input propertychange',function(){
});
但該方法有一個問題渗饮,就是當(dāng)我們使用中文輸入的時候但汞,比如我要打一個”好“字,在我敲鍵盤‘H’鍵的時候互站,事件就已經(jīng)觸發(fā)了私蕾,而我們需要的是,但我完整地敲完‘hao’之后胡桃,選擇了”好“字踩叭,之后才觸發(fā)事件執(zhí)行。這里提供個人的一個思路翠胰,就是在事件觸發(fā)之后容贝,對輸入值進(jìn)行中文驗(yàn)證,如果為true亡容,說明我已經(jīng)輸入了一個完整的中文字符嗤疯,也就是可以進(jìn)行檢索(其他程序)了。
$('input').on('input propertychange',function(){
var $this_val = $(this).val();
var re = /^[\u4e00-\u9fa5]+$/; //中文的正則表達(dá)式
if(re.test($this_val)){
...
}
});
另外闺兢,該方法也有一種情況下不會被觸發(fā)茂缚,那就是動態(tài)的給input賦值戏罢。如:
$('input').val('好好學(xué)習(xí),天天向上');
頁面上可以看到input的值變化為‘好好學(xué)習(xí)脚囊,天天向上’,但事件并沒有被觸發(fā)執(zhí)行龟糕。