web-dev-qa-db-ja.com

element.setCustomValidityが機能していないようです

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) }
        }
    );

})
15
pachyderm94

setCustomValidityは、jQuery APIではなくDOM APIです。コードでは、jQueryインスタンスで呼び出しようとしています。したがって、まずDOM要素のインスタンスを取得してから、APIを呼び出す必要があります。

また、HTML5準拠のブラウザとフォームである必要があります。

 var element = $("#tbEmail")[0];
 element.setCustomValidity('The email address entered is already registerd.');
24
vinayakj

これへのより単純なアプローチ、「[0]」を追加します。

$("#tbEmail")[0].setCustomValidity("")
5
Paulo Henrique

get(0)を使用します。

    var element = $("#tbEmail").get(0);
    element.setCustomValidity('The email address entered is already registerd.');
3