2014-01-10 3 views
0

Я использую плагин проверки jQuery и пытаюсь использовать функцию обратного вызова errorPlacement с помощью подстановочного знака. Я пробовал бесчисленные перестановки синтаксиса подстановочных знаков с и без метода .attr (и попробовал несколько других методов), и я не могу заставить его работать правильно.jQuery Validation plugin errorPlacement with wildcard selector

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

/*** This will work but only for the specified string ****/ 
if (element.attr("name") == "cdlradio1") 

Я хочу, чтобы выбрать все элементы ввода, начинающиеся с «» cdlradio

var $validator = $("#myform").validate({ 
    errorPlacement: function(error, element) { 
if (element.attr("[name^='cdlradio']")) 
    error.insertAfter(element.closest(".bootradlab")); 
else 
    error.insertAfter(element); 
} 

Любая помощь будет высоко оценен.

ответ

0

Это не в нужном формате ...

if (element.attr("[name^='cdlradio']")) ... 

Потому что, the .attr() method is looking for an attribute as its only argument. Очевидно, [name^='cdlradio'] является селектором, не атрибутом. Вам не нужен селектор , так как ваш целевой элемент уже, выбранный аргументом element.

Вы должны получить поле name и проверьте, чтобы увидеть, если он содержит вашу строку ...

if (element.attr('name').indexOf('cdlradio') >= 0) ... 

"Джокер" DEMO: http://jsfiddle.net/aBrL2/2/

BTW - ^= is the "starts with" selector, не дикой карте. Однако мое решение выше - настоящая дикая карта, так как она не заботится о позиции, пока строка возникает где-то. Мой ответ можно легко преобразовать в «начало с», изменив оператор >= на оператора ==.

«начинается с» DEMO: http://jsfiddle.net/aBrL2/3/

+1

Я знал, что что-то не так с помощью метода(), так как я уже ссылки на имя элемента в том, что я думал, было подстановочные заявление о .attr. Использование indexOf, безусловно, лучший путь. Спасибо за разъяснение и за исправление. Работает отлично! –