jquery错误:val()不是函数

时间:2011-03-30 07:54:03

标签: jquery

为什么我收到此错误?我验证号码时val is not a function

$(this).find('#register-validation .next').click(function() {
     var _parent = $(this).parents('#register-validation');
     $('.loading-big').html(loadMsg).fadeIn(300);
     _parent.find('input.required').each(function(index) {
         if($(this).val() == "" || $(this).val() == errReq) { // here is fine
             $(this).val(errReq);
             $(this).addClass("error");
         }
         else if(isNaN($(this).hasClass('number').val())) { // but when validation goes here, I got this error.
             $(this).val(errNum);
             $(this).addClass("error");
         }
         else {
             $(this).removeClass("error");
         }
     });
});

请帮忙。非常感谢。

3 个答案:

答案 0 :(得分:4)

$(this).hasClass('number').val()

该行导致您的问题。您正在调用hasClass()返回的布尔值上的.val()。在链接方法时你必须要小心,因为尽管大多数会返回jquery对象,但有些返回不同的值,因此无法链接。

请改为尝试:

$('.number', this).val()

这将在此上下文中选择具有数字类的所有元素。它与执行$(this).find('.number').val()

相同

答案 1 :(得分:1)

 else if(isNaN($(this).hasClass('number').val())) {

应该是

 else if($(this).hasClass('number') && isNaN($(this).val())) {

答案 2 :(得分:0)

据我所知,

$(this).hasClass('number')返回一个布尔值,所以你不能链接它。

此外,您可能需要考虑缓存jquery对象,以便它不必一遍又一遍地创建对象。

只需将$this = $(this)放入您的方法并引用$this即可提高您的表现。