动态添加/删除验证规则

时间:2010-12-25 18:38:13

标签: jquery validation

当用户点击该行中的复选框时,我需要动态地将验证规则添加到文本框中,并在用户取消选中时将其删除。这就是我所做的,它工作正常,但我不确定这是否是正确的方法。 这是我的HTML代码:

<tbody>
 <c:forEach items="${list}" var="item">
    <tr>
      <td align="center">
         <input type="checkbox" name="selectItems" value="<c:out value="${item.numberPlate}"/>" />
      </td>
      <td align="left"><c:out value="${item.numberPlate}"/></td>
      <td align="left"><c:out value="${item.driver.fullName}"/></td>
      <td align="left"><input type="text" name="mileage_<c:out value="${item.numberPlate}"/>" value="" /></td>
     </tr>
  </c:forEach>                       
</tbody>

和我的jquery:

----- ---- EDITED

现在我正在使用 add / removeClass ,它也可以正常工作,但是不是更快的方法吗?我的意思是,避免编写这么多'add / removeClass'指令的一种方法是什么?最后我怎么能用addClass表示“min:100”或“minlength:6”?

$("input[name=selectItems]").change(function() {
    if (this.checked)
       {  
            $(this).closest("tr").find("input[name^=mileage]").addClass('required');
            $(this).closest("tr").find("input[name^=mileage]").addClass('number');
       }
     else
       {
            $(this).closest("tr").find("input[name^=mileage]").removeClass("required")
            $(this).closest("tr").find("input[name^=mileage]").removeClass('number');

       }
 });     

alt text

任何建议都是受欢迎的......我差点忘了,圣诞快乐!

1 个答案:

答案 0 :(得分:2)

一个小的改进是使用addClass和removeClass而不是使用attr分配类值,这样你就不会删除任何已经分配给不处理验证的输入字段的类(即分配给字段样式的类)

修改 :(根据您的评论更新了以下代码)

$("input[name=selectItems]").change(function() {
        var me = $(this);
        var scoper = me.parent().parent();
        var otherInputs = $("input[name^=mileage]", scoper);
    if (this.checked)
       {  
            otherInputs.addClass('required number');
            otherInputs.attr('maxlength', '6');
       }
     else
       {
            otherInputs.removeClass("required number");
       }
 });