设置$(this).val()时IE8 Stack Overflow

时间:2014-08-13 13:14:12

标签: javascript jquery internet-explorer-8

我有一个输入框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;
    }
}

但是它不会替换值,只会返回堆栈溢出。我被困在了所有的信念之外。有谁知道造成这种情况的原因以及如何纠正

1 个答案:

答案 0 :(得分:4)

由于这个

,你正在获得堆栈溢出
onpropertychange="validateEntryIE(this)"

每次设置输入框的值时都会调用它,并且由于函数本身会更改属性,因此最终导致自身再次被调用,并且一次又一次地重复...直到你得到堆栈溢出。

尝试使用onkeyup,onblur或onchange事件,以便不进行递归。