jQuery错误:val()不是一个函数。

3

为什么我在验证数字时会收到错误信息val不是函数

$(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");
         }
     });
});

请帮忙,非常感谢。


@corroded 我猜 ($(this).val() == "" || - S L
3个回答

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

那行代码导致了你的问题。你正在对hasClass()返回的布尔值调用.val()。在链式调用方法时必须小心,因为大多数方法会返回jQuery对象,但有些会返回不同的值,因此不能进行链式调用。

尝试使用以下代码:

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

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


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

应该是

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

0

$(this).hasClass('number') 据我所知返回一个布尔值,因此您无法将其链接。

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

只需在方法中放置$this = $(this)并引用$this即可稍微提高性能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接