javascript - jQuery 验证,element.value 在 errorplacement 中未定义

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

我尝试为我的注册表建立一个验证。我正在使用 jQuery 验证。当文本框为空时,我希望错误消息显示为占位符。当添加文本但仍然抛出错误时,我想使用自定义设置。

我的问题是调试这段代码时:

.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" })

我使用了错误的值或属性吗?

最佳答案

element.value is undefined in 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());
    }
}

演示:http://jsfiddle.net/atrL0h1s/

<小时/>

但是,我永远不会使用 alert() 因为你可以使用 jQuery 做一些看起来更好的事情。在这种情况下,使用 Safari 时,关闭 alert() 会导致新的警报以无限循环的方式一遍又一遍地出现。

关于javascript - jQuery 验证,element.value 在 errorplacement 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28426549/

相关文章:

asp.net-mvc - 重复用户添加到数据库

css - 仅 1 页 100% 宽度,其余部分保持流畅

javascript - 在 react 中重构条件逻辑

javascript - 如何引用数据

javascript - 一堆小闭包 vs 一个大闭包

javascript - 单击按钮时使用ajax打印 "Hello World!"

javascript - 如何使除某些部分外的整个页面变黑?

jquery - 垂直导航折叠和展开

javascript - 使用 jQuery 选择具有特定类的元素的正确方法是什么

c# - MVC C# 编译 debug = true 仍然捆绑