onblur功能在IE11中停止工作

时间:2015-11-25 12:35:43

标签: javascript internet-explorer-11

我有一个简单的函数,它检查一个字段是一个数字,它开始" 000"。 使用" onblur"来检查,以便向用户提供即时(ish)反馈。

我的代码:

function IsNumeric(input)
{
return (input - 0) == input && (''+input).trim().length > 0;
}

function checkNumber(field) {
if (!IsNumeric(field.value)) {
seterrorlabel("That's not a number");
toggleButton('SubmitButton', true);
} else if (!(field.value.substring(0, 3) == "000")) {
seterrorlabel("All numbers must begin 000. One 0 for external. Two 0's for an international number.");
toggleButton('SubmitButton', true);
} else {
toggleButton('SubmitButton', false);
seterrorlabel("");
}
}

function toggleButton(button,disableit) {
var input = document.getElementById(button);
input.disabled = disableit;
}

function seterrorlabel(message) {
var thelabel = document.getElementById('numbererror');
thelabel.innerHTML = message;
}

问题是在Internet Explorer 11中,onblur函数似乎只能运行一次。我可以输入一个数字,如" 001234"并收到预期的错误,但在纠正错误后,输入有效的" 0001234"标签未清除。 同样,如果我添加字母,使这个非数字,标签不会更新。 然而,在Chrome中,这种方法很有效,并且每当我希望onblue开火时它都会更新。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

只想确认当您输入'001234'并点击按钮时,再次将焦点重点放到文本框时,您的按钮是否会启用

答案 1 :(得分:0)

通过使用IsNumeric的不同函数在Internet Explorer中修复了这个问题 - 前一个函数导致了问题,但是在将函数定义更改为全局范围之前它们没有显示控制台。