我有一个输入框 onpropertychange="validateEntryIE(this)"
validateEntryIE = function(object) {
$(object).val(validateEntry($(object).val()));
}
哪个调用:
validateEntry = function(str) {
if( str != "" ) {
var regx = /[A-Za-z0-9_]/;
var str_new = "";
var chars = str.split('');
for(var i in chars) {
if (regx.test(chars[i])) {
str_new += chars[i];
}
}
return str_new;
}
}
但是它不会替换该值,仅返回堆栈溢出。我被困住了,难以置信。有谁知道是什么原因造成的以及如何纠正
最佳答案
因此您会遇到堆栈溢出
onpropertychange="validateEntryIE(this)"
每次设置输入框的值时都会调用它,并且由于函数本身会更改属性,因此最终会导致自身被再次调用,一次又一次......重复直到获得堆栈溢出。
尝试使用 onkeyup、onblur 或 onchange 事件,这样就不会出现递归。
关于javascript - 设置 $(this).val() 时 IE8 堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25287239/