2015-08-21 3 views
0

Мой JQuery имеет следующий код:JQuery валидатор errorplacement

highlight: function(element, errorClass, validClass) { 
      $(element).addClass(errorClass).addClass('errorImage').removeClass(validClass).removeClass('validImage'); 
      if($(element.form).find("input[type=radio") == true) { 
       $(element.form).find("input[id=" + element.id + "]").addClass(errorClass).addClass('errorImageRadio'); 
      }else{ 
       $(element.form).find("input[id=" + element.id + "]").addClass(errorClass).addClass('errorImage'); 
      } 
      }, 

То, что я пытаюсь есть, если тип входа является радио или флажок, он должен в основном использовать другой класс, я отсутствующий что-то здесь не так, конечно, что это.

Это часть плагина проверки достоверности jQuery.

+0

Просто используйте '$ (элемент) 'вместо' $ (element.form) .find ("input [id =" + element.id + "]") '. – Sparky

ответ

1

Объекты jQuery всегда правдивы, если вы хотите проверить, соответствуют ли объекты jQuery любым элементам DOM, используйте свойство .length.

Вы также недостающую квадратную скобку в вашем .find() запросе:

Вместо

if($(element.form).find("input[type=radio") == true) 

Try:

if($(element.form).find("input[type=radio]").length) 

Для чего это стоит (довольно много) вы должны использовать селектор идентификаторов для целевых элементов по их идентификатору, а не по селектору атрибутов. Поскольку у вас уже есть элемент DOM в переменной, можно просто обернуть, что в объекте JQuery:

$(element.form).find("input[id=" + element.id + "]").addClas... 

Становится

$(element).addClas... 

Etc ...

+1

Вместо '$ (element.form) .find (" # "+ element.id)', просто '$ (element)' будет делать. – Sparky

+0

@Sparky Правильно. Приветствия. – George

+0

Кроме того, 'if (element.is (': radio'))' работает хорошо. – Sparky

Смежные вопросы