Плагин проверки jQuery errorPlacement с селектором подстановочных знаков

0

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

Я прочитал несколько десятков потоков о подстановочных знаках, а также документацию 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);
}

Любая помощь будет принята с благодарностью.

Теги:
wildcard
jquery-validate

1 ответ

0
Лучший ответ

Это не в правильном формате...

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

Потому что .attr() ищет атрибут как единственный аргумент. Очевидно, что [name^='cdlradio'] - это селектор, а не атрибут. Вам не нужен селектор, так как ваш целевой элемент уже выбран аргументом element.

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

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

"Подстановочный знак" ДЕМО: http://jsfiddle.net/aBrL2/2/

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню