web-dev-qa-db-fra.com

element.setCustomValidity ne semble pas fonctionner

J'ai un événement de modification sur un champ de messagerie qui est censé valider que l'adresse e-mail est unique à l'aide d'un appel ajax. Le problème est qu'il me dit que l'élément ne prend pas en charge la méthode setCustomValidity. Veuillez aider.

$("#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 est l'API DOM et non l'API jQuery. Dans votre code, vous essayez de l'appeler sur l'instance jQuery. Vous devez donc d'abord obtenir l'instance de l'élément DOM, puis appeler l'API.

Il doit également être un navigateur compatible HTML5 et un formulaire.

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

Une approche plus simple à cela, en ajoutant "[0]":

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

utilisez get(0).

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