![](/img/trans.png)
[英]asp.net/javascript, why is textbox onChange event does not fire?
[英]ASP.NET/Webform Textbox does not fire the autopostback when onkeyup event defines “setTimeout” (IE9)
我在IE 9上遇到了一个奇怪的情况。它仅适用于Chrome和Firefox。 我将只发布相关代码。
这是一个遗留应用程序(VS2008)。 “ corp框架”在运行时定义了字段掩码,它使用onkeyup事件以及如下所示的javascript:
Javascript:
function mascara(o, f) {
v_obj = o
v_fun = f
setTimeout(function() {
v_obj.value = v_fun(v_obj.value)
}, 1)
}
ASP.NET HTML:
<asp:TextBox runat="server" ID="TextBox5" AutoPostBack="true" OnTextChanged="TextChanged" />
掩码和回发事件适用于除IE9之外的所有浏览器。 当我在javascript遮罩函数中删除setTimeout时,回发有效,但是我失去了遮罩行为。
我发现AutoPostBack = true将使用setTimeout呈现onchange事件。 掩码再次使用setTimeout函数,当我删除掩码中的setTimeout时,回发适用于IE 9。
呈现的HTML:
<input name="TextBox5" type="text" onchange="javascript:setTimeout('__doPostBack(\'MPTextBox5\',\'\')', 0)" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" id="MPTextBox5" onkeyup="mascara(this, mnum);">
我无法弄清楚IE9的问题和解决方案。
MS不会修复此错误:
解决方法位于: http : //bugs.jquery.com/ticket/10818
// Set value for IE without clearing the "changed" flag
this.innerText = val;
// Set value for everyone else
if ( this.value != val ) {
this.value = val;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.