2010-01-13 52 views
2

我有一个表单,我分别调用每个表单元素上的valid()函数。我有一个名为“altemailaddress”的字段,我将规则设置为“电子邮件”,并且要求为false。但是,如果输入文本框中没有值,则valid()函数返回false。调用jQuery验证有效的表单元素

jQuery("#aspnet-form").validate({ 
    onsubmit: false, 
    rules: { 
     prefix: "required", 
     emailaddress: { 
      required: true, 
      email: true 
     }, 
     altemailaddress: { 
      required: false, 
      email: true 
     } 

    }, 
    messages: { 
     prefix: "Please enter a prefix", 
     emailaddress: { 
      required: "Please enter an email address", 
      email: "Invalid email format" 
     } 

    } 
}); 

var $group = jQuery(this).parents(".validationGroup"); 
    var isValid = true; 


    $group.find(":input").each(function (i, item) { 
     if (!jQuery(item).valid()) 
     { 

      isValid = false; 
     }   

    }); 

当我遍历每个项目时,我调用valid()函数。如果altemailaddress的规则要求:false,则忽略它并在没有提供值的情况下返回false。

如果我只是设置验证插件验证提交它工作正常。

回答

4

我觉得valid()只是一个enitre形式

尝试使用$.validate().element(item)

if (!$("#aspnet-form").validate().element(item)) 
{ 
    isValid = false; 
} 

http://docs.jquery.com/Plugins/Validation/Validator/element#element

+1

这个工作在第一,然后在不改变任何代码,我再次测试,现在这是行不通的。我将不得不再次尝试 – 2010-01-14 16:35:52

+0

确保您仍在使用jQuery 1.3 我昨天有一些网站开始失败,因为他们自动开始使用jQuery 1.4,并且一些插件没有工作 – 2010-01-15 15:08:37

0

我有同样的问题,我的解决办法是多一点的时间,但工作得很好:

假设您有一个输入字段“电子邮件”,如:

<input id="Email" class="text-box single-line" type="text" value="" name="Email" data-val-regex-pattern="[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[a-zA-Z]{2,4}" data-val-regex="Invalid email address." data-val="true"></input> 

可以检查该字段的值这样的正则表达式匹配:

var emailreg = $('#Email').attr('data-val-regex-pattern'); 
if($('#Email').val().match(emailreg) != null){ //the field is valid }