javascript - 设置 $(this).val() 时 IE8 堆栈溢出

标签 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;
    }
}

但是它不会替换该值,仅返回堆栈溢出。我被困住了,难以置信。有谁知道是什么原因造成的以及如何纠正

最佳答案

因此您会遇到堆栈溢出

onpropertychange="validateEntryIE(this)"

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

尝试使用 onkeyup、onblur 或 onchange 事件,这样就不会出现递归。

关于javascript - 设置 $(this).val() 时 IE8 堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25287239/

相关文章:

javascript - 请解释这个javascript结构

javascript - 我们在 12 月(夏令时)多了一个小时吗?

javascript - 当我单击取消时 window.print() 刷新 iframe 中的页面

php - 如何使用php/jquery实现持久化页面?

javascript - 为什么这些日历 javascript 隐藏 IE 的 select、applet 和 iframe 标记?

jquery - 仅在 IE8 上使用 jQuery 幻灯片效果边距折叠

javascript - 动态更改时如何更改MenuItem(antd)的样式?

javascript - React - useState 钩子(Hook)第一次和后续设置状态时的奇怪行为

jquery 检索直接在元素上设置的 css 样式

javascript - 占位符值在 IE8 中不起作用