2016-08-15 33 views
1

我需要将客户端表单验证添加到HTML5表单。我不想破解我自己的解决方案,我不使用Angular。checkit验证是否有validate.js库中断?

由于我使用HTML5,因此patternrequired属性组合涵盖基本验证。

但是,在需要自定义验证的情况下,例如,需要勾选特定的复选框组合 - 我需要更多。

快速网络搜索带我到The 10 Best JavaScript Libraries for Form Validation and Formatting

我测试了Validate.js,并验证复选框时出现问题。 Validate.js按名称结合特定的表单元素,例如

var validator = new FormValidator('example_form', [{ 
    name: 'req', 
    rules: 'required' 
}); 

相应的HTML表单:

<form name="example_form"> 
<input name="req" /> 
</form> 

我决定把这个应用到一组复选框并实现自己的自定义规则(documented on Validate.js):

<form name="example_form"> 
    <input type="checkbox" name="test" value="a"> 
    <input type="checkbox" name="test" value="b"> 
    <input type="checkbox" name="test" value="c"> 
</form> 

首先,验证添加我的自定义规则的配置对象:

var validator = new FormValidator('example_form', [{ 
    name: 'test', 
    rules: 'callback_my_rule' 
}); 

...注意required规则(开箱即用)已不存在,并已由我自己的规则callback_my_rule取代。接下来,我定义my_rule(按照文档中,callback_前缀被删除):

validator.registerCallback('my_rule', function(value) { 
    var atLeastOne = ($('[name="test"]:checked').length > 0); 
    return atLeastOne; 
}); 

False返回值是指验证失败,而True是有效的。

问题是,如果没有勾选复选框,我的自定义验证功能my_rule永远不会被调用。只有当我勾选复选框时才会调用该函数。选中某个复选框时只调用自定义验证函数似乎是不直观的。 enter image description here

然而,示例形式并验证该复选框,周围的Validate.js documentation源挖,I:

Validate.js documentation提供一个复选框一个示例形式中,然而,该复选框验证函数从样品代码省略看到该复选框使用外的开箱required规则:enter image description here

问题

  • 有没有人有Validate.js工作带复选框和自定义 验证功能?
  • 有没有更好的自定义表格 验证库?
+0

是否有在控制台的任何错误? – brso05

+0

@ brso05 - 没有错误。 – Jack

回答

0

我测试过Jquery Validation Plugin,它的工作原理与复选框相似!

DEMO LINKhttp://jsfiddle.net/K6Wvk/

$(document).ready(function() { 

     $('#formid').validate({ // initialize the plugin 
      rules: { 
       'inputname': { 
        required: true, 
        maxlength: 2 
       } 
      }, 
      messages: { 
       'inputname': { 
        required: "You must check at least 1 box", 
        maxlength: "Check no more than {0} boxes" 
       } 
      } 
     }); 

    }); 
+0

这个JQuery插件做我需要的东西,似乎更好的支持(社区和文档。我切换到它,所以我接受这个答案。 – Jack

+0

我很高兴你的问题得到解决! –