Я использую плагин 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);
}
Любая помощь будет принята с благодарностью.
Это не в правильном формате...
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/