element.setCustomValidity似乎不起作用

pac*_*m94 16 forms validation jquery html5 dom

我在电子邮件字段上有一个更改事件,该事件应该使用ajax调用验证电子邮件地址是唯一的.问题是它告诉我该元素不支持setCustomValidity方法.请帮忙.

$("#tbEmail").change(function (event) {
    var obj = new Object();

    obj.email = $("#tbEmail").val();
    var params = JSON.stringify(obj);

    $.ajax
    (
        {
            type: "POST",
            url: "./controllers/Consumer.aspx/validateEmail",
            data: params,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (result) {
                if (result.d != 0) {

                    var element = $("#tbEmail");
                    element.setCustomValidity('The email address entered is already registerd.');
                    alert(element.checkValidity());
                    alert(element.validationMessage);
                }
                else {
                    $("#tbEmail").setCustomValidity("");
                };
            },
            error: function (result) { ProcessError(result) }
        }
    );

})
Run Code Online (Sandbox Code Playgroud)

vin*_*akj 26

setCustomValidity是DOM API而不是jQuery API.在你的代码中,你试图在jQuery实例上调用它.因此,您需要首先获取DOM元素实例,然后调用API.

它还需要是符合HTML5标准的浏览器和表单.

 var element = $("#tbEmail")[0];
 element.setCustomValidity('The email address entered is already registerd.');
Run Code Online (Sandbox Code Playgroud)

  • 那行得通!非常感谢vinayakj。我会玩几天而不去想那个。我如何接受答案?我是 stackoverflow 的新手。 (2认同)

Ami*_*ian 5

使用get(0)

    var element = $("#tbEmail").get(0);
    element.setCustomValidity('The email address entered is already registerd.');
Run Code Online (Sandbox Code Playgroud)


Pau*_*que 5

一个更简单的方法,添加"[0]":

$("#tbEmail")[0].setCustomValidity("")
Run Code Online (Sandbox Code Playgroud)