我认为你的问题不在于onblur
验证,而是你通过它的声音调用按键的事件(例如阻止用户在达到极限时再次键入)或者我误解了。
如果您的验证确实是onblur,那么您不必担心启用插入/覆盖等操作,您只对用户完成输入后input
元素的值感兴趣。
如果您试图阻止用户,如果他们达到此限制,因为他们键入,我会写一个函数来计算您正在测试的实际长度。对于例如,
function validateMyInput() {
var myInputField = document.getElementById('myInput');
var removeAllExcludedCharsResult = myInputField.value.replace('&','');//exclude &
var totalLength = removeAllExcludedCharsResult.length;
if(totalLength < 500) { //limit of this test is 500
return true;
}
else {
return false;
}
}
此功能明显改变,你需要什么,也许是为了通过传递输入,最大长度和字符排除数组的元素,使之可重复使用更加通用。
UPDATE
我已经测试这个问题是Chrome和Insert键似乎被忽略。另一方面,IE覆盖。不过,它似乎是特定于页面的,例如,如果我已在页面A上启用插入,它似乎不会影响页面B.我发现this page即使按下插入,它似乎也能够获取键码事件。这可能是由于下面的代码?
if(window.event) {
event = window.event; //where event is the javascript key event.
}
不管怎样,上面的链接似乎已经占据了这个问题,希望这将有答案,如果上面的是不正确的。
希望我没有误解这个问题是什么,这有所帮助。
我更新了我的帖子,提到我实际上使用onkeydown。使用子字符串和脱字符位置只有在我可以确定(或假设)已打开重写类型时才有效。我不介意在达到最大长度时像处理文本框一样总是在打开文本框,但这种打破UI体验的方式是用户不会期望这种行为。 – row1