element.setCustomValidity 似乎不起作用
Posted
技术标签:
【中文标题】element.setCustomValidity 似乎不起作用【英文标题】:element.setCustomValidity does not seem to work 【发布时间】:2016-02-01 01:52:18 【问题描述】:我在电子邮件字段上有一个更改事件,该事件应该使用 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)
);
)
【问题讨论】:
【参考方案1】:setCustomValidity
是 DOM API 而不是 jQuery API。在您的代码中,您试图在 jQuery 实例上调用它。所以你需要先获取 DOM 元素实例,然后调用 API。
还需要兼容 html5 的浏览器和表单。
var element = $("#tbEmail")[0];
element.setCustomValidity('The email address entered is already registerd.');
【讨论】:
成功了!非常感谢vinayakj。我会玩好几天,没想到这一点。我如何接受答案?我是 *** 的新手。 或者你可以做document.getElementById('tbEmail').setCustomValidity('输入的电子邮件地址已经注册。');【参考方案2】:一个更简单的方法,添加“[0]”:
$("#tbEmail")[0].setCustomValidity("")
【讨论】:
【参考方案3】:使用get(0)
。
var element = $("#tbEmail").get(0);
element.setCustomValidity('The email address entered is already registerd.');
【讨论】:
【参考方案4】:$("#tbEmail").setCustomValidity("错误信息")
【讨论】:
虽然此代码 sn-p 可能是解决方案,但 including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。 否决票:第一:没有解释,第二:这是错误的。它与提问者有同样的失败。我希望没有人会读到这篇文章。以上是关于element.setCustomValidity 似乎不起作用的主要内容,如果未能解决你的问题,请参考以下文章