Javascript 当onkeyup事件定义“0”时,ASP.NET/Webform Textbox不会触发自动回发;设置超时“;(IE9)
我在IE 9上遇到了一个奇怪的情况。它只适用于Chrome和Firefox。我将只发布相关代码 它是一个遗留应用程序(VS2008)。“corp framework”在运行时定义字段掩码,它使用onkeyup事件,javascript如下: Javascript:Javascript 当onkeyup事件定义“0”时,ASP.NET/Webform Textbox不会触发自动回发;设置超时“;(IE9),javascript,c#,asp.net,webforms,autopostback,Javascript,C#,Asp.net,Webforms,Autopostback,我在IE 9上遇到了一个奇怪的情况。它只适用于Chrome和Firefox。我将只发布相关代码 它是一个遗留应用程序(VS2008)。“corp framework”在运行时定义字段掩码,它使用onkeyup事件,javascript如下: Javascript: function mascara(o, f) { v_obj = o v_fun = f setTimeout(function() { v_obj.value = v_fun(v_obj.value
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不会修复此错误: 可在以下位置找到解决方法:
我做了更多的测试,发现当您在onkeyup事件中更改字段值时,问题/bug似乎就出现了。当我把这个添加到文本框时,问题也是一样的:Attributes.Add(“onkeyup”,“this.value=”;”);
// Set value for IE without clearing the "changed" flag
this.innerText = val;
// Set value for everyone else
if ( this.value != val ) {
this.value = val;
}