2008-12-05 278 views

回答

17

上次我遇到這個問題時,我最終使用了Internet Explorer的onpropertychange事件。我讀了關於here on MSDN:這是推薦它的方法。

+0

但它似乎每次用戶按下一個鍵時會觸發。我在這裏做錯了什麼? – Preets 2008-12-05 09:32:10

+1

不幸的是它是如何工作的。 但我只是發現這個資源,這似乎解決了一個很好的方式問題:http://jehiah.cz/archive/onchange-and-autocomplete – 2008-12-05 09:41:47

+2

注意:onpropertychange不再似乎在IE9中可靠地工作,至少在我的測試中。 – 2011-11-23 21:46:39

12

我以前遇到過這個令人討厭的功能,當時我的解決方案是使用onfocus事件來記錄文本框的當前值,然後使用onblur事件來檢查當前值是否與值相匹配在聚焦期間保存。例如

<input type="text" name="txtTest" value="" onfocus="this.originalvalue=this.value" onblur="if (this.value != this.originalvalue) alert('Test has changed')"/> 
+2

這發生在我最新版本的Chrome中,很明顯,它不是IE特定的東西。 'onblur`解決了我的問題。 – DanO 2011-09-20 00:01:04

1

我剛打開自動完成關閉的文本框,我需要觸發一個文本改變事件

'Turn off Auto complete 
'(it needs to fire the text change event) 
txtYourTextBox.Attributes.Add("AutoComplete", "off") 

只要把在頁面加載。

或者,您可以將屬性添加到您的標記中的input元素或整個form上:

<input type=text autocomplete=off> 

<form autocomplete=off> 
6

大廈蒂姆·C'S答案,這裏是我想出了一個簡單的jQuery來處理這對頁面上的所有文本框:

$("input[type=text]").bind("focus change",function(){ 
    this.previousvalue = this.value; 
}).blur(function(){ 
    if (this.previousvalue != this.value){ 
     $(this).change(); 
    } 
}) 

如果你不關心的onchange射擊多次,你可以把它簡單:

$("input[type=text]").blur(function(){ 
    $(this).change(); 
}) 
1

我發現下面的jQuery(V1.10 +)JavaScript並在文本是自動完成HTML文本輸入字段的情況下工作。這是測試,以可靠地至少在Safari 6.1.1的工作在Mac OS X 10.8.5,但應在其他兼容的瀏覽器工作也:

$("input:text[id=text_field_id]").bind("focus change keyup blur", function(event) { 
// handle text change here... 
}); 

似乎添加blur事件處理程序是關鍵儘管其他事件處理程序有助於確保在文本更改時隨時調用事件處理程序,無論是由於瀏覽器自動完成功能的編輯還是新輸入。

只需更換上面您想要的文字輸入領域的相關選擇的"input:text[id=text_field_id]"代碼,如果使用id屬性是指你的領域,更換text_field_id與文本字段的id屬性值。

相關問題