2011-11-21 142 views
2

我正在使用jQuery验证插件。我有3个字段,并且只有在 中的一个不为空时才需要验证它们,否则根本不验证。jQuery验证组验证

<input type="text" data-validate="{validate:{required:true, 
messages:{required:'Flickr set is required'}}}" id="flickr_set" name="flickr_set"> 


<input type="text" data-validate="{validate:{required:true, 
messages:{required:'Flickr ID is required'}}}" id="flickr_id" name="flickr_id"> 

<input type="text" data-validate="{validate:{required:true, 
positiveNumber:true, messages:{required:'Photos count is required', 
positiveNumber:'Positive number is required'}}}" id="flickr_photos-count" name="flickr_photos-count"> 

回答

3

您需要使用验证插件的dependency-callback方法。

什么,这将让你做的是:

使所需的元素,根据给定的回调的结果。

然后,您可以放置​​在3个字段,上面写着基于从回调函数返回本场将只需要required验证规则;然后你可以把领域的规则说需要这个领域,如果任何字段不为空return true,或者若所有字段为空并不需要这个领域return false

因此,如果任何字段都被填充了在他们都成为必需的,如果他们都留空,他们都不需要。

rules: { 
    flickr_set: { 
     required: function(element) { 
      return ($("#flickr_set").is(':empty') && $("#flickr_id").is(':empty') && $("#flickr_photos-count").is(':empty') ? false : true); 
     } 
    }, 
    flickr_id: { 
     required: function(element) { 
      return ($("#flickr_set").is(':empty') && $("#flickr_id").is(':empty') && $("#flickr_photos-count").is(':empty') ? false : true); 
     } 
    }, 
    flickr_photos-count: { 
     required: function(element) { 
      return ($("#flickr_set").is(':empty') && $("#flickr_id").is(':empty') && $("#flickr_photos-count").is(':empty') ? false : true); 
     } 
    } 
} 
-2

就达一

$("form").validate(); 

,并给予输入字段所需的类。

如果你想拥有你可以在上面的JavaScript更改为自定义消息:

$("form").validate({ 
    messages : { 
     flickr_set : "Flickr set is required", 
     flickr_id : "Flickr ID", 
     flickr_photos-count : "Photos count is required" 
    } 
});