今天遇到了一個很棘手的問題,就是在做一些輸入框的驗證的時候,我這邊項目的業務邏輯就是當我選中某個select的某個特定option的時候,需要顯示出一個input輸入框讓用戶輸入東西,但是如果用戶啥也不做,就必須彈出警告框讓用戶輸入,等其輸入後,我這邊再將input隱藏掉。
因此,便產生瞭如下問題,input輸入框顯示的時候,需要自動獲取焦點,此時,我是用的
複製代碼代碼如下:
document.getElementById('id').focus();
恩,嘗試了一下,效果很好,不禁心中大喜,搞定!
但是天算不如人算,在我進行用火狐測試的時候,完蛋了,第一次剛將input顯示出來的時候是好用的,但是隨後我關閉alert提醒框的時候,input無法獲取焦點了,!
問題棘手,又不明其所以,so,小小的查了一下網上大神們的解答方式,發現瞭如下一招,試驗了一下,果然很好用!
在alert之後,將原來的
複製代碼代碼如下:
document.getElementByIdx('id').focus();
換成
複製代碼代碼如下:
window.setTimeout(function () { document.getElementById('id').focus();}, 0);
爽,問題解決!
setTimeout是指在載入後延遲指定時間後執行前面的表達式,當然在這裡是延遲0ms之後執行function。
當我只是解決了這個問題,仍然不知道為什麼在火狐下這樣就能解決,如有哪位大神曉得,給下留言,讓晚生學習一下,不勝感激!