尝试动态添加 jquery 验证错误,为什么此代码不起作用?
Trying to make jquery validation errors get added dynamically, why isn't this code working?
我正在使用以下代码尝试动态添加错误标签,而不必使用那么多 if else 语句,但它似乎不起作用,感谢任何帮助:)
这个有效:
errorPlacement: function(error, element) {
if (element.attr("name") == "site" )
error.insertAfter("div#siteerror");
else if (element.attr("name") == "name" )
error.insertAfter("div#nameerror");
else if (element.attr("name") == "email" )
error.insertAfter("div#emailerror");
else if (element.attr("name") == "password" )
error.insertAfter("div#passworderror");
else if (element.attr("name") == "headerimage" )
error.insertAfter("div#headerimageerror");
else if (element.attr("name") == "header1" )
error.insertAfter("div#header1error");
else if (element.attr("name") == "header2" )
error.insertAfter("div#header2error");
else if (element.attr("name") == "headerfont" )
error.insertAfter("div#headerfonterror");
else if (element.attr("name") == "menucolor" )
error.insertAfter("div#menucolorerror");
else if (element.attr("name") == "menufontcolor" )
error.insertAfter("div#menufontcolorerror");
else if (element.attr("name") == "menufont" )
error.insertAfter("div#menufonterror");
else if (element.attr("name") == "backgroundcolor" )
error.insertAfter("div#backgroundcolorerror");
else if (element.attr("name") == "sitefontcolor" )
error.insertAfter("div#sitefontcolorerror");
else if (element.attr("name") == "sitefont" )
error.insertAfter("div#sitefonterror");
else if (element.attr("name") == "galleryimages" )
error.insertAfter("div#galleryimageserror");
else
error.insertAfter(element);
},
但这不是:
errorPlacement: function(error, element) {
var $inputs = $('input');
$inputs.each(function(){
var name = $(this).attr('name');
var errorname = ('"div#' + name + 'error"')
if (name === name) {
console.log("name: " + name + " " + "errorname: " + errorname);
error.insertAfter($($.parseHTML(errorname)));
console.log("name matches!");
} else {
error.insertAfter(element);
}
});
},
它 returns 所有正确的值,但由于某种原因行不通,有什么想法吗?
开发人员已为您提供了 element
参数,它表示正在验证的元素。
var name = $(element).attr('name');
由于 errorPlacement
在验证时处理每个元素,因此您不需要 .each()
循环,并且 element
参数已经对每个元素起作用。
你在这里弄错了引号,漏了一个分号,而且你不需要括号...
var errorname = ('"div#' + name + 'error"')
这反而有效...
var errorname = 'div#' + name + 'error';
如果您尝试将错误消息插入特定的 div
...
$(errorname).html(error);
if (name === name)
也完全没有意义,因为永远不会出现不等于自己的情况。
决赛:
errorPlacement: function(error, element) {
var name = $(element).attr('name');
var errorname = 'div#' + name + 'error';
console.log("name: " + name + " " + "errorname: " + errorname);
$(errorname).html(error);
},
我正在使用以下代码尝试动态添加错误标签,而不必使用那么多 if else 语句,但它似乎不起作用,感谢任何帮助:)
这个有效:
errorPlacement: function(error, element) {
if (element.attr("name") == "site" )
error.insertAfter("div#siteerror");
else if (element.attr("name") == "name" )
error.insertAfter("div#nameerror");
else if (element.attr("name") == "email" )
error.insertAfter("div#emailerror");
else if (element.attr("name") == "password" )
error.insertAfter("div#passworderror");
else if (element.attr("name") == "headerimage" )
error.insertAfter("div#headerimageerror");
else if (element.attr("name") == "header1" )
error.insertAfter("div#header1error");
else if (element.attr("name") == "header2" )
error.insertAfter("div#header2error");
else if (element.attr("name") == "headerfont" )
error.insertAfter("div#headerfonterror");
else if (element.attr("name") == "menucolor" )
error.insertAfter("div#menucolorerror");
else if (element.attr("name") == "menufontcolor" )
error.insertAfter("div#menufontcolorerror");
else if (element.attr("name") == "menufont" )
error.insertAfter("div#menufonterror");
else if (element.attr("name") == "backgroundcolor" )
error.insertAfter("div#backgroundcolorerror");
else if (element.attr("name") == "sitefontcolor" )
error.insertAfter("div#sitefontcolorerror");
else if (element.attr("name") == "sitefont" )
error.insertAfter("div#sitefonterror");
else if (element.attr("name") == "galleryimages" )
error.insertAfter("div#galleryimageserror");
else
error.insertAfter(element);
},
但这不是:
errorPlacement: function(error, element) {
var $inputs = $('input');
$inputs.each(function(){
var name = $(this).attr('name');
var errorname = ('"div#' + name + 'error"')
if (name === name) {
console.log("name: " + name + " " + "errorname: " + errorname);
error.insertAfter($($.parseHTML(errorname)));
console.log("name matches!");
} else {
error.insertAfter(element);
}
});
},
它 returns 所有正确的值,但由于某种原因行不通,有什么想法吗?
开发人员已为您提供了 element
参数,它表示正在验证的元素。
var name = $(element).attr('name');
由于 errorPlacement
在验证时处理每个元素,因此您不需要 .each()
循环,并且 element
参数已经对每个元素起作用。
你在这里弄错了引号,漏了一个分号,而且你不需要括号...
var errorname = ('"div#' + name + 'error"')
这反而有效...
var errorname = 'div#' + name + 'error';
如果您尝试将错误消息插入特定的 div
...
$(errorname).html(error);
if (name === name)
也完全没有意义,因为永远不会出现不等于自己的情况。
决赛:
errorPlacement: function(error, element) {
var name = $(element).attr('name');
var errorname = 'div#' + name + 'error';
console.log("name: " + name + " " + "errorname: " + errorname);
$(errorname).html(error);
},