解決Js先觸發(fā)失去焦點(diǎn)事件再執(zhí)行點(diǎn)擊事件的問題
最近在做公司的某個(gè)從項(xiàng)目,基本設(shè)計(jì)和淘寶登陸頁類似:
1)文本框內(nèi)容為空是,文本框右側(cè)無清除按鈕,當(dāng)有內(nèi)容時(shí)立即顯示清除按鈕;
2)當(dāng)文本框失去焦點(diǎn)時(shí),清除按鈕消失,獲取焦點(diǎn)時(shí)若文本框內(nèi)有內(nèi)容,則顯示清除按鈕,否則不顯示;
3)文本框再有內(nèi)容且獲取焦點(diǎn)的情況下,點(diǎn)擊清除按鈕,文本框內(nèi)容置空,且清除按鈕消失。
隨后想了想,感覺是個(gè)很簡(jiǎn)單的需求,只要結(jié)合使用keyup和blur以及click時(shí)間就可以解決了,然而,結(jié)果卻不是我想要的,代碼如下:
html代碼:
<div class="input-group"> <input type="text" id="mobile" class="form-control" placeholder="請(qǐng)輸入手機(jī)號(hào)" autocomplete="off" /> <div class="input-group-addon icon-clear"></div> </div>
js代碼:
//綁定監(jiān)聽手機(jī)號(hào)文本框內(nèi)容按鈕事件
$('#mobile').keyup(function() {
var clearBtn = $(this).parent().find('.icon-clear');
if($(this).val() == '') { clearBtn.hide(); }
else { clearBtn.css('display', 'table-cell'); }
});
//手機(jī)號(hào)輸入框失去焦點(diǎn),去除清除按鈕;獲取焦點(diǎn)時(shí),若有值則顯示清除按鈕
$('#mobile').blur(function() {
$('#mobile').parent().find('.icon-clear').hide();
}).focus(function(){
if($(this).val() != ''){
$(this).parent().find('.icon-clear').css('display', 'table-cell');
}
});
//清除文本框內(nèi)容事件
$('.icon-clear').click(function() {
$(this).parent().find('input').val('');
$(this).hide();
});
這樣看著像是什么問題都沒有的樣子,其實(shí)不然,運(yùn)行之后發(fā)現(xiàn),在文本框中輸入內(nèi)容后文本框獲取焦點(diǎn),這個(gè)時(shí)候我想要去點(diǎn)擊清除按鈕來清除剛才我寫的東西,發(fā)現(xiàn),文本框內(nèi)容沒有置空,清除按鈕卻先消失了,很納悶啊。
后來經(jīng)查閱發(fā)現(xiàn),是先執(zhí)行的失去焦點(diǎn)事件,那么如何去解決呢?
而后,我在失去焦點(diǎn)事件中對(duì)其中的方法進(jìn)行了延遲處理,如下所示:
//驗(yàn)證碼輸入框失去焦點(diǎn),去除清除按鈕;獲取焦點(diǎn)時(shí),若有值則顯示清除按鈕
$('#auth_code').blur(function() {
setTimeout(function() { //進(jìn)行延時(shí)處理,時(shí)間單位為千分之一秒
$('#auth_code').parent().find('.icon-clear').hide();
}, 100)
}).focus(function(){
if($(this).val() != ''){
$(this).parent().find('.icon-clear').css('display', 'table-cell');
}
});
如此操作后就可以完美解決了,目前未發(fā)現(xiàn)任何副作用。
以上這篇解決Js先觸發(fā)失去焦點(diǎn)事件再執(zhí)行點(diǎn)擊事件的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- javascript觸發(fā)模擬鼠標(biāo)點(diǎn)擊事件
- 利用chrome瀏覽器進(jìn)行js調(diào)試并找出元素綁定的點(diǎn)擊事件詳解
- JS鼠標(biāo)3次點(diǎn)擊事件實(shí)現(xiàn)代碼及擴(kuò)展思路
- JavaScript實(shí)現(xiàn)父子dom同時(shí)綁定兩個(gè)點(diǎn)擊事件,一個(gè)用捕獲,一個(gè)用冒泡時(shí)執(zhí)行順序的方法
- vuejs響應(yīng)用戶事件(如點(diǎn)擊事件)
- JavaScript給每一個(gè)li節(jié)點(diǎn)綁定點(diǎn)擊事件的實(shí)現(xiàn)方法
- js中class的點(diǎn)擊事件沒有效果的解決方法
- JS通用方法觸發(fā)點(diǎn)擊事件代碼實(shí)例
相關(guān)文章
JavaScript實(shí)現(xiàn)二維坐標(biāo)點(diǎn)排序效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)二維坐標(biāo)點(diǎn)排序效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
js實(shí)現(xiàn)移動(dòng)端圖片滑塊驗(yàn)證功能
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)移動(dòng)端圖片滑塊驗(yàn)證功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
JS中使用new Option()實(shí)現(xiàn)時(shí)間聯(lián)動(dòng)效果
這篇文章主要介紹了JS中使用new Option()實(shí)現(xiàn)時(shí)間聯(lián)動(dòng)效果,需要的朋友可以參考下2018-12-12
一步一步封裝自己的HtmlHelper組件BootstrapHelper(二)
一步一步封裝自己的HtmlHelper組件:BootstrapHelper,系列文章第二篇,感興趣的小伙伴們可以參考一下2016-09-09
javascript實(shí)現(xiàn)簡(jiǎn)易計(jì)算器的代碼
下面小編就為大家?guī)硪黄猨avascript實(shí)現(xiàn)簡(jiǎn)易計(jì)算器的代碼小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05
JavaScript箭頭函數(shù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了JavaScript箭頭函數(shù)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
動(dòng)態(tài)加載、移除js/css文件的示例代碼
本文簡(jiǎn)單介紹動(dòng)態(tài)加載、移除、替換js/css文件的示例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒加載,需要的朋友參考下吧2018-03-03

