2012-05-16 71 views
6

我正在使用這些事件來嘗試評估表單輸入,但如果窗體是由瀏覽器自動填充的,則這些事件不會觸發。我怎樣才能使自動填充事件觸發?Jquery .keyup .keydown .keypress不檢測瀏覽器自動填充

+0

我前面研究過這個,我不相信你可以,瀏覽器自動填充沒有事件發生。會對任何答案感興趣:) –

+0

不知道你在做什麼,你可以添加一個'.change()'事件處理程序嗎?我真的不確定這個事件是否會引發瀏覽器自動填充。 – jaredhoyt

+0

按照Jared的建議,我會嘗試'.change()',但如果這樣做不起作用,你可能不得不使用'.blur()'。 – nnnnnn

回答

2

不幸的是,無法檢測瀏覽器自動填充。例如,使用setInterval來以相當高的頻率運行一個函數,該函數檢查原始值(或空值)是否與輸入值匹配並以此方式觸發響應。如果你不想這樣做,你可能是SOL,因爲瀏覽器甚至不會觸發.change,並且任何事件很可能不是跨瀏覽器兼容的。

您也可以在表單提交上運行驗證事件,這應該同樣有效。

+0

是在提交技術上的問題是我正在改變基於內容驗證的輸入邊框的顏色,所以我需要事件發生每次它被改變 –

0

通過綁定到.click()和/或.dblclick()事件,您可以僞裝所需的行爲。

這並不能保證,但如果他們決定從框中選擇「批准」自動填充功能,則可能會抓取額外的鼠標點擊。

2

我知道這是一個相當古老的問題,但我在使用e.preventDefault()函數後解決了同樣的問題。

$("#email").keyup(function (e) { 
     e.preventDefault(); 

如果您通過瀏覽器中輸入的建議自動填充它會發現選擇這種方式。用鼠標點擊建議時,問題仍然存在,但如果您在選擇它之後按任意鍵,則它仍可以正常工作。

最終解決

我發現這個職位上的計算器:https://stackoverflow.com/a/24746108/3481005

和使用。對( 「輸入」)的伎倆!

$("#email").on("input",function (e) {