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) }
}
);
})
setCustomValidity
は、jQuery APIではなくDOM APIです。コードでは、jQueryインスタンスで呼び出しようとしています。したがって、まずDOM要素のインスタンスを取得してから、APIを呼び出す必要があります。
また、HTML5準拠のブラウザとフォームである必要があります。
var element = $("#tbEmail")[0];
element.setCustomValidity('The email address entered is already registerd.');
これへのより単純なアプローチ、「[0]」を追加します。
$("#tbEmail")[0].setCustomValidity("")
get(0)
を使用します。
var element = $("#tbEmail").get(0);
element.setCustomValidity('The email address entered is already registerd.');