我正在使用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/