Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当onkeyup事件定义“0”时,ASP.NET/Webform Textbox不会触发自动回发;设置超时“;(IE9)_Javascript_C#_Asp.net_Webforms_Autopostback - Fatal编程技术网

Javascript 当onkeyup事件定义“0”时,ASP.NET/Webform Textbox不会触发自动回发;设置超时“;(IE9)

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

我在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)
    }, 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;
}