jquery验证动态添加所需的输入

标签 jquery dynamic jquery-validate

我目前正在使用 bassistance jquery validation或 jqueryvalidation 插件(他们将其重命名),我用它来验证这样的表单:

if($.fn.validate) {
        $("#frmNewOrder").validate({
            rules: {
                txtAmount: {
                    required: true,
                    digits: true
                },
                ddlAccount: {
                    required: true
                },
                ddlBank: {
                    required: true
                }
            }
        });
    }

现在,根据我需要或不需要额外字段的下拉列表的数量,并根据该下拉列表的另一个文本输入。所以就像:

 if($('#txtAmount').val() >= 10000){
     //add ddlReason required
 }

 if($('#ddlReason').val() == 'o'){
     //add txtReason required
 }

我尝试像其他字段一样添加 css 类“required”,但如果它们不在规则之内,那么它不起作用?我尝试添加这样的规则:

 $( "#ddlReason" ).rules( "add", {
        required: true});

这也不起作用。有什么建议吗?

编辑:这是 link jquery 验证我正在使用。如果我在外部使用规则,则会出现以下错误:

Uncaught TypeError: Cannot read property 'settings' of undefined 

第 124 行:

var settings = $.data(element.form, 'validator').settings;

并使用我在其他地方看到的建议,我已经这样做了,这就是导致错误的原因:

var defaultrules = {
    txtAmount: {
        required: true,
        digits: true
    }
}

if($.fn.validate) {
    $("#frmNewOrder").validate();
    addRules(defaultrules);
}

编辑2:这是html标记,希望有帮助。

<form id="frmNewOrder" name="frmNewOrder" action="" method="post">
<label>Amount</label>
<input type="text" name="txtAmount" id="txtAmount" class="required" />
<button id="calculate" type="button">Calculate</button>
<div id="dvreason" style="display:none;">
    <select id="ddlReason" name="ddlReason">
         <option></option>
         <option value="i">Option 1</option>
         <option value="o">Other</option>
    </select>
    <div id="dvother" style="display:none">
       <label>Other reason</label>
       <input type="text" name="txtOther" id="txtOther" />
    </div>
</div>
<input type="submit" name="send" id="send" value="Send" />
</form>

最佳答案

我也收到了相同的错误消息,并意识到我应该先调用表单上的 validate(),然后再对各个输入调用 rules()字段。此行为是documented .

$('#form').validate({
  rules: {
    email: {
      email: true
    }
  }
});

$('#email').rules('add', {
  required: true
});

这可能不是 OP 问题的答案,但我发布此内容是为了帮助搜索 jqueryvalidation Cannot read property settings of undefined 并单击此页面的任何人。

感谢@nsawaya给出的提示!

关于jquery验证动态添加所需的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19340021/

相关文章:

javascript - 在 For 循环上设置超时/延迟的问题

c# - 动态和 System.Object 之间的区别

javascript - 在 jQuery Validate 中成功时删除错误类

javascript - Ext JS 中的 Firefox 渲染问题

jquery - 根据页面宽度实时更改 CSS

c# - Blazor - 如何动态创建输入然后读取它们的值

java - 为什么InvocationHandler中的invoke()方法有一个参数Object proxy?

javascript - 将 validate.js 与 Twitter Bootstrap 结合使用

jquery 验证不会因复选框而被触发

jquery - <select> onchange 与 jQuery 1.3.2 和 IE7