-1

我是 Jquery 验证的新手(http://docs.jquery.com/Plugins/Validation

我有一个动态表格。我需要知道是否可以验证这样的表单:

<form ...>
<div class="multi-city">                        
    <div class="controls visible">
        <label for="id_form-0-city_input">City</label>
        <input type="text" name="form-0-city_input" class="city-input ui-autocomplete-input" id="id_form-0-city_input" autocomplete="off">
        <p style=""><a href="#" class="delete">Remove</a></p>
    </div>
    <input type="hidden" id="id_form-0-city" name="form-0-city">

    <div class="controls visible">
        <label for="id_form-1-city_input">City</label>
        <input type="text" name="form-1-city_input" class="city-input ui-autocomplete-input" id="id_form-1-city_input" autocomplete="off">
        <p style=""><a href="#" class="delete">Remove</a></p>
    </div>
    <input type="hidden" id="id_form-1-city" name="form-1-city">

    <div class="controls hidden">
        <label for="id_form-2-city_input">City</label>
        <input type="text" name="form-2-city_input" class="city-input ui-autocomplete-input" id="id_form-2-city_input" autocomplete="off">
        <p style=""><a href="#" class="delete">Remove</a></p>
    </div>                                    
</div>
</form>

基本上我需要验证“.controls.visible”。通过代码:

$('.multi-city .controls.visible')

我应该使用什么策略来验证这个动态字段?

有任何想法吗?

此致,

4

1 回答 1

0

不完全确定你在问什么。 默认情况下,此插件将简单地忽略任何隐藏字段。如果这些字段没有真正“隐藏”,那么您需要在创建或“删除”(隐藏?)这些字段时动态编辑规则。进行这种操作的唯一方法是使用插件中已经内置的方法......

  • rules('add')
  • rules('remove')

请参阅所有文档: http: //docs.jquery.com/Plugins/Validation#Plugin_methods


要将规则添加到动态添加的字段,您将在创建字段后立即使用rules('add')方法。

$('[name="Field2"]').rules('add', {
    required:true,
    messages: {
        required: "Custom message."
    }
});

或者一次对于许多新字段,使用“开始于”选择器和.each...

$('[name^="Field"]').each(function() {
    $(this).rules('add', {
        required:true,
        messages: {
            required: "Custom message."
        }
    });
});

此方法的简单演示:http: //jsfiddle.net/xCY4T/1/


另一种方法是使用addClassRules 方法创建一个。 class

$.validator.addClassRules("MyRule", {
    required: true
});

然后,当您创建新字段时,请确保它们每个都包含 aclass="MyRule"和一个唯一name的 ,当然。

<input type="text" name="Field1" class="MyRule" />
<input type="text" name="Field2" class="MyRule" />

这种方法非常简单,但我看不出有办法覆盖默认消息。

简单演示:http: //jsfiddle.net/xCY4T/3/

于 2013-04-02T15:59:36.000 回答