jquery使用名称中的括号验证复杂的日期组

时间:2011-02-02 10:11:37

标签: jquery forms symfony1 validation

我正在使用symfony框架来开发一个网站。 我的表格看起来像这样

<li class="fields">
    <label>Date de début* :</label>
    div class="field">
        <select id="agenda_date_debut_day" name="agenda[date_debut][day]" class="required w_auto required">
            <option selected="selected" value=""></option>
            <option value="1">1</option>
            ...
        </select>
        <select id="agenda_date_debut_month" name="agenda[date_debut][month]" class="required w_auto required">
            <option selected="selected" value=""></option>
            <option value="1">1</option>
            ...
        </select>
        <select id="agenda_date_debut_year" name="agenda[date_debut][year]" class="required w_auto required">
            <option selected="selected" value=""></option>
            <option value="1">1</option>
            ...
        </select>
    </div>
</li>   

<li class="fields"> <label>Date de début* :</label> div class="field"> <select id="agenda_date_debut_day" name="agenda[date_debut][day]" class="required w_auto required"> <option selected="selected" value=""></option> <option value="1">1</option> ... </select> <select id="agenda_date_debut_month" name="agenda[date_debut][month]" class="required w_auto required"> <option selected="selected" value=""></option> <option value="1">1</option> ... </select> <select id="agenda_date_debut_year" name="agenda[date_debut][year]" class="required w_auto required"> <option selected="selected" value=""></option> <option value="1">1</option> ... </select> </div> </li>

我试过这样的东西,但它不起作用:

var validator = $(".validate_form").validate({
    groups: {
      /*dateDebut: '"agenda[date_debut][day]" "agenda[date_debut][month]" "agenda[date_debut][year]"'*/
      dateDebut: "agenda[date_debut][day] agenda[date_debut][month] agenda[date_debut][year]"
},
errorPlacement: function(label, element) {
    if (/^dateDebut/.test(element[0].name)) {
    label.insertAfter("#agenda_date_debut_year");
    } 
    ...
 }
 ...

}

我阅读了很多关于如何使用名称attribut的帖子,但我不知道如何处理我的。 正如我所说,我正在使用symfony,因此我无法更改属性名称以删除[]。

也许,可以改变插件使用id而不是名字,但我不知道怎么做。

有人可以帮助我,

THKS

2 个答案:

答案 0 :(得分:0)

它实际上在名称中使用括号可以正常工作。

例如,我有:

$(document).ready(function(){
  $("#coppa_users_form form").validate({
    rules: {
      "coppa_user[user_attributes][username]": {
        required: true,
        minlength: 3
      }
    },
    messages: {
      "coppa_user[user_attributes][username]": "<p class='errormsg'>Please enter at least three characters</p>"
    }
  });
});

这很好用。可能检查上面的JS中是否存在任何冲突?

答案 1 :(得分:-1)

您需要使用反斜杠转义括号以使正则表达式测试起作用:"agenda\[date_debut\]\[day\] agenda\[date_debut\]\[month\] agenda\[date_debut\]\[year\]"