jQuery验证动态创建的下拉选择菜单

时间:2014-05-13 17:18:38

标签: javascript jquery html jsp jquery-validate

因此,在创建新记录时,我有一个JSP循环创建选择菜单。我想要完成的规则​​是:

选择这些中的至少一个,可以是50个或更多。就是这样。对我来说似乎很简单,但由于某种原因我有点卡住...每个选择菜单的新规则必须在飞行中创建吗?我可以用1条规则验证整个组吗?

这是HTML / JSP:

<select class="reccomendations"
        name="selQuarantineRec"            
        required>
    <option value="">Select...</option>
    <c:forEach items="${qrntRecommendations}" var="qrntRec"
               varStatus="idx">
        <option value="${determination.id}_${ qrntRec.key }">
            <c:out value="${ qrntRec.value.name } "/>
        </option>
    </c:forEach>
</select>

这是JS:

ns.util.validate('#nis_pest_form', {
    rules: {
        "selQuarantineRec": { //name of the select elements
            require_from_group: [1, '.reccomendations']
        }
    }
});

感谢您的阅读和帮助,如果可以的话! 干杯 -b

1 个答案:

答案 0 :(得分:0)

引用OP:

  

“必须动态创建每个选择菜单的新规则吗?”

是。首次初始化插件后,您只能使用插件提供的方法声明新规则。请参阅the .rules('add') method

创建新元素,然后调用它......

$('#myselect').rules('add', {  // <- select a single element
    require_from_group: [1, '.reccomendations']
});

如果一次创建多个元素,则必须将其包装在jQuery .each()中......

$('.select').each(function() {  // <- select a group of elements
    $(this).rules('add', {
        require_from_group: [1, '.reccomendations']
    });
});

注:

如果您使用与class相同的require_from_group选择器,则可以将代码压缩为此...

$('.reccomendations').each(function() {
    $(this).rules('add', {
        require_from_group: [1, this]
    });
});

  

“我可以使用1条规则验证整个组吗?”

没有。您必须将规则应用于组中的每个元素。


重要

无论您如何创建元素并声明规则,每个元素必须包含唯一的name属性。这就是插件跟踪输入的方式。