jQuery 验证插件错误使用通配符选择器放置



我正在使用jQuery验证插件,并尝试将errorPlacement回调函数与通配符选择器一起使用。我已经尝试了无数次使用和不使用.attr方法的通配符语法排列(并尝试了其他几种方法),但无法使其正常工作。

我已经阅读了几十个关于通配符的线程,以及 api 文档,但没有一个解决它们在需要使用"element"的函数中的使用。 似乎无法理解它...

/*** 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/

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

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

最新更新