2011-05-05 57 views
1

jQuery plugin's Validation's方法Valid()在空集合上调用时会抛出错误this[0] is undefined。我认为jQuery约定不会对空集合做任何事情,当然不会抛出任何错误,或者可能是我错过了某些东西。请问有人能说明一下吗?从插件jQuery验证插件的方法在调用空集合时抛出错误

Demo

代码片段。这个[0] - 如下所示 - 在集合为空时抛出错误。

// http://docs.jquery.com/Plugins/Validation/valid 
valid: function() { 
    if ($(this[0]).is('form')) { 
     return this.validate().form(); 
    } else { 
     var valid = true; 
     var validator = $(this[0].form).validate(); // This is the line that throws error 
     this.each(function() { 
      valid &= validator.element(this); 
     }); 
     return valid; 
    } 
+0

所以不这样做? – mcgrailm 2011-05-05 20:22:32

+0

我们应该在调用方法之前检查集合吗?我认为我们不需要。我更新了代码以包含addClass的调用,即使在空集合上调用时也不会引发任何错误。这是预期的行为? – 2011-05-05 20:36:10

回答

1

什么,我做的只是添加类,我想有那么验证我的形式有一个ID输入和我打电话验证它

$("#myform").validate() 

这里是我如何使用形成一个example验证

我还建议看demos

一般来说标准的jQuery的,如果你申请说喜欢一个click事件的元素不存在,你不会得到错误jquery跳过它。说,也许验证应该做的一样,但它显然不这样做,我会建议按照我张贴或检查选择器的长度之前申请验证

+0

演示只是一小段代码,我得到这个错误。我有一个相当复杂的形式,在某些情况下,我不想验证整个表单,而只是一个字段。此外,这个问题的重点并不是要解决这个具体问题,而是要知道这是否也需要在其他地方进行处理。有许多地方像$(“someSelector”)。someMethod完成。是否应该重新审视所有这些地方? – 2011-05-05 20:46:02

+0

@amit_g看我的编辑 – mcgrailm 2011-05-05 20:54:56

相关问题