jQuery的验证具有字段的动态数(jQuery validate with a dynamic n

2019-07-29 01:15发布

我对此有场,其中数字是基于前一阶段的答案群体的动态数量的舞台形式。

我生成字段服务器侧为阵列,即

<input id="foo[0]"...
<input id="bar[0]"...

<input id="foo[1]"...
<input id="bar[1]"...

<input id="foo[2]"...
<input id="bar[2]"... etc

无论数量,各个领域都需要与我还需要验证对类型和在某些情况下位数。 我使用jQuery验证插件的客户端处理(是的,备份与服务器端的东西太多)的验证可以作为表单需要通过严格的XHTML不在线完成(编辑:见下面我的附录) 。

我的问题是,我可以不知道如何使用验证后场的动态数量。 下面介绍一下验证语法通常如下所示的表格的其余部分:

$(document).ready(function() {

    // validate stage_form on keyup and submit
    var validator = $("#form_id").validate({

        // rules for field names
        rules: {

            name: "required", 
            address: "required",
            age: { required: true, number: true }

        },

        // inline error messages for fields above
        messages: {

            name: "Please enter your name", 
            address: "Please enter your address",
            age: { required: "Please enter your age", number: "Please enter a number" }

        }

    });

});

Answer 1:

实际上它应该工作如果你会使用,而不是初始化规则的validate()选项类。

标记:

<input id="foo[0]" class="required"
<input id="bar[0]" class="required number"

<input id="foo[1]" class="required"
<input id="bar[1]" class="required email"

jQuery的:

$(document).ready(function() {

  var validator = $("#form_id").validate({
    messages: {
            name: "Please enter your name", 
            address: "Please enter your address",
            age: { 
               required: "Please enter your age", 
               number: "Please enter a number" 
            }

    }

  });

});

希望这个作品。 思南。



Answer 2:

您是否尝试过使用自定义类的规则来定义XHTML不兼容的规则?

在这个例子文档只使用一个类,但我想你可以结合不同的自定义类来实现你需要的验证规则。 我没有尝试这样做我自己。



Answer 3:

没有答案,所以我会后我的“临时”的解决方案,这是设置“必要”和“类型”在线验证规则,让“最大长度”服务器端的检查,然后用内嵌标题标签显示自定义消息。

这可能是这个职位的目的不够好,但我仍然好奇,如果有一种方法可以内的jQuery做“完全”。



Answer 4:

这里是另一种方式来做到这一点。

/* Normal validate initialisation. */
$('#myForm').validate({

    /* Use the submitHandler method to add custom-selector-based validation. */
    submitHandler: function(form, ev) {

        /* Find your dynamic field/s. Note that you may want to access them via a scope external to validate, as any selection you do in this internal scope will be static from the form's pre-edit state. */
        var el = $('#selector');

        /* Do your custom validation. */
        if (  el.val() !== 'A'  ) {

            /* Show any errors:- 'fieldname': 'error message'. */
            this.showErrors({
                'name-of-a-field-near-where-you-want-your-error-placed': 'Please enter "A" to continue'
            });

            /* Prevent form submission. */
            return;
        } 
    }
});


Answer 5:

我找到了一种方法使用“元数据”的事情。

这应该有一个动态名称的模板内使用。 所以,我并不需要知道这个名字。

不足之处是还无法与干净的标签纯JavaScript使用的代码。

<script src="jquery.metadata.js" type="text/javascript"></script>

<input validate="{required: true, email: true, messages: { required: 'i'm required', 'i'm not valid e-mail' }}" name="dynamicRow[  myRandomNumber ]"type="text" class="input_normal" />

 $( function() {
     // setup stuff
     $.metadata.setType("attr", "validate"); 
});


文章来源: jQuery validate with a dynamic number of fields