jQuery Validation Plugin .rules()无法按预期使用动态添加的输入字段

Lan*_*lot 0 jquery jquery-validate

我无法弄清楚如何使验证插件验证我在表单中动态创建的输入字段.是的,我一直在搜索,到目前为止我找不到任何解决我问题的答案.所以这就是我的要求.

Demo:http://jsfiddle.net/MGbWx/

我想要做的是在第一行中要求物品价格.新克隆的行应该只在其他三个输入字段之一中有输入时才需要项目价格.

我尝试了以下内容.

var itemPropSelector = 'input[name="sku[]"], input[name="itemVariant[]"], input[name="itemQuant[]"]';

$('#item-prop-wrapper').on('keyup', itemPropSelector, function () {
    $(this).closest('.item-prop-body').find('.item-price-input').rules('add', {
        required: true
    });
});
Run Code Online (Sandbox Code Playgroud)

但它并不像我期望的那样有效.几个小时我一直在努力...

谁可以帮我这个事?我很感激!!

Spa*_*rky 5

jQuery Validate插件使用该name属性在内部跟踪输入元素.无论如何分配规则,每个输入都必须具有唯一 name属性.

由于每个克隆的行都包含相同的内容name,因此您的方法将始终失败.请记住这一点,只需调整代码即可增加索引编号name以及id.像这样......

newRow.attr('name', newIDNum);
Run Code Online (Sandbox Code Playgroud)

虽然IMO,我不会开始任何idname有一个数字.请参阅:https://stackoverflow.com/a/79022/594235


使用该.rules('add')方法将required规则添加到这些新输入没有任何问题.但是,简单地将required类或required属性添加到input元素将完全否定.rules('add')在您的情况下使用该方法的需要.

<input required="required" ...
Run Code Online (Sandbox Code Playgroud)

要么

<input class="required" ...
Run Code Online (Sandbox Code Playgroud)

使用这些内联HTML属性来设置规则而不是.rules()方法只是优先级或规范的问题.(有些规则太复杂,无法使用HTML属性声明)