我有一个简单的函数,它检查一个字段是一个数字,它开始" 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开火时它都会更新。
有什么想法吗?
答案 0 :(得分:0)
只想确认当您输入'001234'并点击按钮时,再次将焦点重点放到文本框时,您的按钮是否会启用
答案 1 :(得分:0)
通过使用IsNumeric的不同函数在Internet Explorer中修复了这个问题 - 前一个函数导致了问题,但是在将函数定义更改为全局范围之前它们没有显示控制台。