1

我在 IE8 中运行下面的代码,我得到 className 为 null 或不是对象。任何帮助

JS:

var validators = {
    allowalphanum: function (val) {
        return /^[a-z0-9]+$/i.test(val);
    },
    allownospace: function (val) {
        return !/\s/.test(val);
    }
}

$('#submit_form .required').blur(function () {
    var returnVal1 = true;
    var classes = $(this).className.split(/\s+/);
    for (var p in classes) {
        if (classes[p] in validators) {
            returnVal1 = returnVal1 & validators[classes[p]](input.val());
        }
    }
});
4

3 回答 3

3

只需替换您的代码:

var classes = $(this).className.split(/\s+/);

有了这个:

var classes = this.className.split(/\s+/);

实际上className是一个 DOM 属性。它不是 jQuery 对象的属性。

于 2013-10-21T08:01:57.830 回答
2

使用任一香草js:

var classes = this.className.split(/\s+/);

或使用 jQuery 方法 attr:

var classes = $(this).attr('class').split(/\s+/);
于 2013-10-21T08:04:51.177 回答
1
var classes = $(this).className.split(/\s+/);

我不记得className是一个有效的 jQuery 方法。.attr('class')如果您想使用 jQuery 对象,这可能是您所需要的。

其他答案已经发布了关于如何在没有 jQuery 的情况下做到这一点。

$(this)不同于this第一个给你一个 jQuery 对象,第二个给你一个 DOM 对象。

于 2013-10-21T08:03:00.153 回答