移動端實時監聽輸入框變化


如果是在pc端,監聽輸入框你可能想到focus、blur、hover、onkeyup這些事件,但是如果是在移動端使用使用這些事件用戶體驗極差,因為你要用戶收起鍵盤並且再點個空白處才生效,甚至還存在很大的兼容差異。那么怎么解決呢?

方案一

以前做一個簡單的模糊搜索框的需求,大致思路是定義一個1s左右執行的定時器,定時器函數里面的邏輯是 判斷文本框內容的長度,如果跟上一次長度有變化,就走一遍查詢,如果沒有變化不執行任何操作。

方案二

利用jquery提供的 input propertychange 事件監聽,同時也是判斷文本框長度變化,執行查詢操作。

顯然如果做類似實時響應的模糊查詢時,貌似兩個方案都差不多,但是如果要實現下面這個效果圖的功能時方案二是最優選

如上效果圖,沒次我在文本框輸入內容即實時打印文本長度,當長度滿足11且正則校驗是正確手機號時,“獲取驗證碼”按鈕高亮,且點擊事件生效。這是移動端注冊類發短信常用的功能,核心代碼如下:

.code-highlight {
    background-color: #eba612;
}
.code-readonly {
	background-color: #262523;
}
.not-active {
	background-color: #aca9a7;
}

<input class="li-input" type="tel" autocomplete='off' name="telInput" id="telInput" placeholder="請輸入您的手機號">

$(document)
.on('input propertychange','#telInput',function (e) {
	if (e.type === "input" || e.orignalEvent.propertyName === "value") {
		console.log(this.value.length)
    	if(this.value.length == 11){
        	var myreg = /^1\d{10}$/;
			if(!myreg.test(this.value)){
				common.tips({msg:'請輸入正確手機號'});
				return;
			}

        	$('#getCodeBtn').removeClass('not-active').addClass('code-highlight');
        	self.options.tel = true;
        }else{
        	$('#getCodeBtn').addClass('not-active').removeClass('code-highlight');
        	self.options.tel = false;
        }
    }
})

重點是jquery提供的input propertychange這個事件,如果覺得可以,不妨改善下現有的發短信吧,以前我也是用的blur事件..


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM