input根據實時輸入的值進行內容檢索是常見的業務場景,但使用change,或者keypress等事件綁定在遇到復制粘貼的時候則不會觸發事件的發生,無法做到實時監聽。解決的方法就是同時使用input propertychange事件進行綁定。例:
$('input').on('input propertychange',function(){
});
但該方法有一個問題,就是當我們使用中文輸入的時候,比如我要打一個”好“字,在我敲鍵盤‘H’鍵的時候,事件就已經觸發了,而我們需要的是,但我完整地敲完‘hao’之后,選擇了”好“字,之后才觸發事件執行。這里提供個人的一個思路,就是在事件觸發之后,對輸入值進行中文驗證,如果為true,說明我已經輸入了一個完整的中文字符,也就是可以進行檢索(其他程序)了。
$('input').on('input propertychange',function(){
var $this_val = $(this).val();
var re = /^[\u4e00-\u9fa5]+$/; //中文的正則表達式
if(re.test($this_val)){
...
}
});
另外,該方法也有一種情況下不會被觸發,那就是動態的給input賦值。如:
$('input').val('好好學習,天天向上');
頁面上可以看到input的值變化為‘好好學習,天天向上’,但事件并沒有被觸發執行。