带通配符选择器的jQuery Validation插件errorPlacement

时间:2014-01-10 21:02:18

标签: jquery jquery-validate wildcard errorplacement

我正在使用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);
}

非常感谢任何帮助。

1 个答案:

答案 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/

开头