尝试动态添加 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)也完全没有意义,因为永远不会出现不等于自己的情况。

演示:jsfiddle.net/rttLsoxL/

决赛:

errorPlacement: function(error, element) {
    var name = $(element).attr('name');
    var errorname = 'div#' + name + 'error';
    console.log("name: " + name + " " + "errorname: " + errorname);
    $(errorname).html(error);
},