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 オブジェクトを提供し、2 つ目は DOM オブジェクトを提供するという点で異なります。

于 2013-10-21T08:03:00.153 に答える