JQuery проверки и группы - как избежать использования errorPlacement? - PullRequest
1 голос
/ 09 февраля 2012

Текущий пример из groups Использование говорит, что необходимо определить errorPlacement, где имена полей жестко закодированы:

$("#myform").validate({
  groups: {
    username: "fname lname"
  },
  errorPlacement: function(error, element) {
     if (element.attr("name") == "fname" 
                 || element.attr("name") == "lname" )
       error.insertAfter("#lastname");
     else
       error.insertAfter(element);
   },
   debug:true
 })

Есть ли способ избавиться отэто errorPlacement с именами полей?Сообщение об ошибке всегда должно быть после последнего элемента в группе.

1 Ответ

4 голосов
/ 10 февраля 2012

Я думаю, вам придется использовать errorPlacement, но вы можете использовать несколько приемов, чтобы каждый раз получать ошибку в согласованном месте среди групп:

$("#test-form").validate({
    groups: { 
      username: "fname lname",
      range: "min max"
    },
    errorPlacement: function ($error, $element) {
      var elementName = $element.attr("name"),
          lastInGroup = $.map(this.groups, function(fields, name) {
            var fieldsArr;
            if (fields.indexOf(elementName) >= 0) {
              fieldsArr = fields.split(" ");
              return fieldsArr[fieldsArr.length - 1];
            } else {
              return null;
            }
          })[0];

      if (lastInGroup) {      
          $error.insertAfter($("input[name='" + lastInGroup + "']"));
      } else {
          $error.insertAfter($element);
      }
    }
});

По сути, получите доступ к определенному вами объекту groups и найдите последнее поле в каждой группе. Прикрепите ошибку после этого поля.

Пример: http://jsbin.com/acenic/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...