我正在使用jQuery Validation插件并尝试将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);
}
非常感谢任何帮助。
答案 0 :(得分:0)
这种格式不正确......
if (element.attr("[name^='cdlradio']")) ...
因为,the .attr()
method is looking for an attribute as its only argument。显然,[name^='cdlradio']
是选择器,不是属性。您不需要选择器,因为目标元素已由<{1}}参数选择。
您必须获取字段element
并检查它是否包含您的字符串...
name
“通配符”DEMO:http://jsfiddle.net/aBrL2/2/
BTW - ^=
is the "starts with" selector,不一张外卡。但是,我上面的解决方案是一张真正的外卡,因为只要字符串出现在某处,它就不关心位置。通过将if (element.attr('name').indexOf('cdlradio') >= 0) ...
运算符更改为>=
运算符,我的答案很容易转换为“以”开头“。
“以”DEMO:http://jsfiddle.net/aBrL2/3/
开头