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

时间:2013-11-17 13:49:23

标签: jquery jquery-validate

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

Demohttp://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
    });
});

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

任何人都可以帮我这个吗?我很感激!!

1 个答案:

答案 0 :(得分:5)

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

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

newRow.attr('name', newIDNum);

虽然是IMO,但我不会启动任何idname的号码。请参阅:https://stackoverflow.com/a/79022/594235


使用.rules('add')方法将required规则添加到这些新输入中没有任何问题。但是,只需将required类或required属性添加到input元素即可完全取消在您的情况下使用.rules('add')方法的必要性。

<input required="required" ...

<input class="required" ...

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