输入字段的这个值.val()不是函数

时间:2015-08-31 21:00:08

标签: javascript jquery

我有这个jquery代码来检查给定输入上的任何值,然后如果输入有值,则添加一个简单的类。

但是在控制台中我收到错误,即.val()不是函数?

我的代码是:

$.fn.tkFormControlMaterial = function(){
        this
            .blur(function () {
                if (this.val())
                    this.addClass('used');
                else
                    this.removeClass('used');
            })
            .after('<span class="ma-form-highlight"></span><span class="ma-form-bar"></span>');
    };

3 个答案:

答案 0 :(得分:1)

bind会让你自由

$.fn.tkFormControlMaterial = function(){
        this
            .blur(function () {
                if (this.val())
                    this.addClass('used');
                else
                    this.removeClass('used');
            }.bind(this))
            .after('<span class="ma-form-highlight"></span><span class="ma-form-bar"></span>');
    }.bind(this);

答案 1 :(得分:1)

我找到了解决方案。

如果有人需要上面我自己代码的工作样本:

$.fn.tkFormControlMaterial = function(){
        $(this)
            .blur(function () {
                if ($(this).val())
                    $(this).addClass('used');
                else
                    $(this).removeClass('used');
            })
            .after('<span class="ma-form-highlight"></span><span class="ma-form-bar"></span>');
    };

答案 2 :(得分:0)

您也可以尝试使用“自我”模式。

var _self = this;
$.fn.tkFormControlMaterial = function(){
        _self
            .blur(function () {
                if (_self.val())
                    _self.addClass('used');
                else
                    _self.removeClass('used');
            })
            .after('<span class="ma-form-highlight"></span><span class="ma-form-bar"></span>');
    };