我使用以下代码尝试动态添加错误标签,而不必使用那么多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);
}
});
},
它返回所有正确的值,但出于某种原因,只是赢了工作,任何想法?
答案 0 :(得分:1)
开发人员已经为您提供了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);
},