Javascript onblur功能在IE11中停止工作

Javascript onblur功能在IE11中停止工作,javascript,internet-explorer-11,Javascript,Internet Explorer 11,我有一个简单的函数,它检查一个字段是一个数字,并且它从000开始。 这是使用onblur检查的,以向用户提供即时反馈 我的代码: function IsNumeric(input) { return (input - 0) == input && (''+input).trim().length > 0; } function checkNumber(field) { if (!IsNumeric(field.value)) { seterrorlabel("That's

我有一个简单的函数,它检查一个字段是一个数字,并且它从000开始。 这是使用onblur检查的,以向用户提供即时反馈

我的代码:

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启动时,它都会更新


有什么想法吗?

只想确认,当您输入“001234”并点击按钮时,当再次聚焦到文本框时,按钮是否会被启用

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

小提琴怎么样?最坏的情况是,你可以从'checkNumber'…@sb9重新连接你的模糊处理程序-由于某种原因,现在似乎根本不起作用。我更新了,它在Chrome和IE11中都能工作…所以,你的小提琴可以工作。然而,当复制/粘贴到我的测试页面时,它会中断。然而我现在得到了这个错误:错误:对象不支持属性或方法“trim”。它指向isNumeric函数。这怎么可能?它正在传递一个值为000的字符串。IE中有什么不正常的地方吗?似乎IsNumeric的参数类型不匹配,它似乎是数字,而不是字符串,数字没有方法修剪。您应该在需要数字的地方使用parseInt,在需要字符串的地方使用String。在Chrome中,只要输入有效,按钮就会启用。只要输入无效,按钮将保持禁用状态。在Internet Explorer中,由于此问题,我无法正确测试。您应该添加onfocus事件和一个函数,如:function enableButton{toggleButton'SubmitButton',false;}这将启用Submit按钮并使功能正常工作。