为什么这个jquery验证规则不起作用?

时间:2016-02-01 19:34:19

标签: jquery jquery-validate

我为跟随选择框创建了一个jquery验证规则,但它无效。这就是我所做的;

<select id="qual">
  <option value="">Choose...</option>
  <option value="1">1</option>
  <option value="2">2</option>
</select>

我的规则如下 -

  $.validator.addMethod("qual", function(value, element, arg){

    return arg != value;
   }, "Please select a qualification.");

 $("#profile-form").validate({
    rules: {
     eduQualification:{
        qual: ""
      },
   }
)};

问题是即使我选择&#34;选择...&#34;它也不会闪烁错误信息。从选择框。

在提交表格时;即使jquery validate返回了一些错误,它也会被提交。我调用了preventDefault();然而,它似乎也失败了..

$(document).on('click', 'form button[type=submit]', function(e) {
            var isValid = $(e.target).parents('profile-form').isValid();

            if(!isValid) {
              e.preventDefault(); //prevent the default action
            } else{

            }
        });

1 个答案:

答案 0 :(得分:1)

  1. qual规则要完成的是什么?通常,select只需要required规则,因为用户只能进行选择,并且无法控制所选值的格式。

  2. 您的rules对象定位到eduQualification元素,但您没有此name的元素。

  3. .validate()的结束括号是向后的。应该是}); ...与.validate({...});

  4. 一样

    您的select 必须包含name属性,否则该插件根本不起作用;对于你在name="eduQualification"对象中声明它的方式,它必须是rules

    $("#profile-form").validate({
        rules: {
            eduQualification: { // <- this is the NAME
                qual: ""        // <- this is the METHOD
                ....
    

    HTML:<select name="eduQualification" id="qual">.....

    要简单地更改消息,请使用messages对象,如下所示......

    <select name="foo">
        <option value="">Choose...</option>
        <option value="1">1</option>
        <option value="2">2</option>
    </select>
    

    jQuery的:

    $(document).ready(function() {
    
        $("#myform").validate({
            rules: {
                foo: {
                    required: true
                }
            },
            messages: {
                foo: {
                    required: "Please select a qualification."
                }
    
            }
        });
    
    });
    

    工作演示:http://jsfiddle.net/773Lozwz/