Asp.Net 4.5
应用程序具有在回发(服务器端)上以编程方式计算的具有最小值和最大值的文本框,如果超过限制,我将从服务器代码调用js函数。适用于Chrome,FF。但在IE浏览器中冻结大约。用户在警告框中单击[确定]后2分钟。大约2分钟后,它允许用户再次开始输入。如果我注释掉警告框,那么它在IE中工作正常。知道什么会导致这只在IE?
服务器端调用JS
If sender IsNot Nothing And TypeOf sender Is TextBox Then
CType(sender, TextBox).Attributes.Add("onblur", "MinMaxBlurServer(this," & min & "," & max & ");")
End If
JavaScript函数
function MinMaxBlurServer(obj, hfmin, hfmax) {
var txt = obj;
var val = txt.value;
var m = document.getElementById("MainContent_minmaxpanel");
m.style.display = 'none';
if (isNumber(val) == "") {
if (val != "") {
//alert("Invalid enery. You must enter a numeric value!");
txt.value = "";
}
} else {
if (isNumber(hfmin)) {
if (parseFloat(val) < parseFloat(hfmin)) {
//alert("Value cannot be less than " + hfmin + ".");
txt.value = hfmin;
}
}
if (isNumber(hfmax)) {
if (parseFloat(val) > parseFloat(hfmax)) {
//alert("Value cannot be greater than " + hfmax + ".");
txt.value = hfmax;
}
}
}
}
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
答案 0 :(得分:0)
通过将警告框方法包装在window.setTimeout中解决了该问题。有关完整的详细信息,请参阅link。示例如下。
window.setTimeout(function () { alert("Value cannot be less than " + hfmin + "."); }, 0);