jQuery验证,在错误放置中未定义element.value

时间:2015-02-10 07:49:01

标签: javascript jquery asp.net-mvc jquery-validate

我尝试为我的registerform构建验证。我正在使用jQuery验证。当文本框为空时,我希望errormessage显示为我的占位符。添加文本但仍然会抛出错误我想使用自定义设置。

我的问题是在调试此代码时:

.validate({
    debug: true,
    errorPlacement: function (error, element) {
        if (element.value === "") {
            element.attr("placeholder", error.text());
        }
        else {
            alert(element.value);
        }
    }
});

我在elment.value上未定义。根据Devtools element.value是文本框中的文本(在文本框中添加文本时更改)但是当我将值视为左边的红色圆圈时,它也表示未定义。

enter image description here

我正在使用文本框形式的MVC助手:

@Html.TextBoxFor(m => m.SurName, new { @class = "form-control required", placeholder = "Förnamn", @type = "SurName" })

我使用错误的值或attr?

1 个答案:

答案 0 :(得分:1)

  

element.value未在errorPlacement

中定义

您正在使用value来破坏它,这是未定义的,并且不是此函数的有效参数。只有errorelement被定义为errorPlacement函数的两个参数。相反,使用jQuery val()来获取元素的值。

errorPlacement: function (error, element) {
    if (element.val() === "") {
        element.attr("placeholder", error.text());
    }
    else {
        // alert(element.val()); // <- Safari fail
        console.log(element.val());
    }
}

DEMO:http://jsfiddle.net/atrL0h1s/


但是,我永远不会使用alert(),因为你可以使用jQuery做更好看的事情。在这种情况下,当使用Safari时,忽略alert()会导致新警报在无限循环中反复出现。