2015-10-31 180 views
7

我有一个电子邮件字段的更改事件,该电子邮件字段应该使用ajax调用来验证电子邮件地址是唯一的。问题是它告诉我该元素不支持setCustomValidity方法。请帮忙。element.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) } 
     } 
    ); 

}) 

回答

5

setCustomValidity是DOM API而不是jQuery API。它也需要是符合HTML5的浏览器和表单。

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

这工作!非常感谢你vinayakj。我会在那玩几天而没有想到这一点。我如何接受答案?我是新的stackoverflow。 – pachyderm94

0

使用get(0)

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

更简单的方法来此,将 “[0]”:

$("#tbEmail")[0].setCustomValidity("")