0

我正在使用 jQuery Validation 插件并尝试将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);
}

任何帮助将不胜感激。

4

1 回答 1

0

这不是正确的格式...

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

因为,.attr()方法正在寻找一个属性作为其唯一的参数。显然,[name^='cdlradio']是一个选择器而不是一个属性。您不需要选择器,因为您的目标元素element参数选择。

您必须获取该字段name并检查它是否包含您的字符串...

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

“通配符”DEMO:http: //jsfiddle.net/aBrL2/2/

顺便说一句-^=是“开始于”选择器而不是通配符。但是,我上面的解决方案是一个真正的通配符,因为只要字符串出现在某个地方,它就不会关心位置。>=通过将运算符更改为运算符,我的答案可以很容易地转换为“开始于” ==

“开始于”演示:http: //jsfiddle.net/aBrL2/3/

于 2014-01-10T23:16:21.520 回答