2008-12-05 96 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属性值。

相关问题