大家看一下一段代碼:
我只為按鈕設(shè)置了一個(gè)點(diǎn)擊事件的情況下,只有點(diǎn)擊按鈕本身才會(huì)請(qǐng)求接口并替換數(shù)據(jù),但是在實(shí)際測(cè)試中發(fā)現(xiàn),對(duì)input按下回車鍵也會(huì)觸發(fā)該接口,起初以為是事件冒泡,但由于是同級(jí),且經(jīng)過測(cè)試依然會(huì)生效。最后在大佬的點(diǎn)撥下知道了這是from表單的自動(dòng)提交。
在Form表單中input會(huì)義自動(dòng)響應(yīng)回車事件。這是表單的默認(rèn)提交動(dòng)作。表單的提交行為,可以用兩種方式定,一是form表單自身,二是form表單的button元素(包括type='submit’的input標(biāo)簽,以及type=‘submit’的button元素,button元素type為Submit)。當(dāng)用戶在一個(gè)表單的input標(biāo)簽按enter按鈕時(shí),瀏覽器會(huì)找到表單中的第一個(gè)提交按鈕(submit button),并觸發(fā)click,同時(shí)提交表單。
而本段代碼中我的第一個(gè)按鈕就是提交按鈕,便會(huì)觸發(fā)查詢。
解決方法有兩種:
1.在from標(biāo)簽中添加以下代碼,判斷在表單內(nèi)按下回車,就會(huì)return函數(shù),強(qiáng)制停止
onkeydown="if(event.keyCode==13){return false;}"
2.也可以使用jq,該方法抓取了頁面內(nèi)所有的from,并在按下回車鍵時(shí)阻止默認(rèn)提交
$('form').on('keypress', function(event) { // 判斷按下的鍵是否是回車鍵 if(event.which === 13) { // 阻止默認(rèn)行為 event.preventDefault(); } });
更多jq知識(shí)點(diǎn)擊這里