Добавить / удалить правила проверки динамически - PullRequest
0 голосов
/ 25 декабря 2010

Мне нужно динамически добавлять правила проверки в текстовое поле, когда пользователь нажимает на флажок в этой строке, и удалять его, когда пользователь снимает флажок. Это то, что я сделал, и он отлично работает, но я не уверен, что это правильный способ сделать это. Вот мой 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? и, наконец, как я могу указать "min: 100" или "minlength: 6" с addClass?

$("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 Ответ

2 голосов
/ 25 декабря 2010

Одним небольшим улучшением было бы использование 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");
       }
 });  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...