IE 瀏覽器下 button元素自動觸發click?


為什么這么說呢?且看下面的情形:

當用戶焦點在輸入框中的時候,當用戶按了“Enter”鍵之后,達到點擊登錄的效果;所以這里就監聽了input的keydown事件,當keyCode是13的時候,就發送請求或者觸發登錄按鈕的click事件。

在其他瀏覽器中都沒有問題,但是在IE中,當我按了Enter之后,確實是請求了,但是同時也觸發了下面“微博”按鈕的click事件。百思不得姐啊!!

首先大概看下頁面結構:

為什么會那樣呢,猜測下:是不是因為當按下Enter鍵的時候,瀏覽器的焦點就自動跳到下一個“可用”button上呢,並且Enter了,只有這樣才會解釋上面的情況。下面就驗證下::

1、我現在焦點在第一個賬號輸入框中,然后敲下Enter鍵,推測下應該是跳到登陸按鈕上,有圖有真相,

可見此時的this就是指向的登陸,OK驗證成功。

2、僅僅靠1上的驗證,還不足夠,下面咱們就把焦點設在密碼框中,按下Enter鍵,看看什么情況

可以看到的是在48行的地方,咱們設置了登陸按鈕不可用,所以下一個可用button就是“微博”了,所以會觸發微博按鈕的click事件。

所以,猜測是合理的。

3、為什么說是Button呢,如果是a標簽呢,我也做了實驗,a標簽是不會有這樣的問題的,只有button會有,這里不再細說。

4、那該怎么解決呢?其實解決辦法還是挺多的,比如可以把button換掉;我采用的是阻止keydown事件的默認行為preventDefault;的確解決問題。

 

OK,到此結束;歡迎吐槽!

 // 后記:默認button是有type類型的 需要指定type=“button”等...所以這個問題是沒有加type導致的。。

 

 

 

 


免責聲明!

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



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