【发布时间】:2013-06-10 23:59:52
【问题描述】:
我正在尝试创建一种标准的新密码表单,您可以在其中输入一次新密码,然后再输入一次以确认。我希望一旦你模糊了这些字段,如果它们不匹配,both 将被标记为无效,如下所示:
- 用户在
#newpassword1中输入密码abc。 -
#newpassword2的用户标签。 - 用户在
#newpassword2中输入密码def。 - 用户标签离开。
- 验证检测到不匹配,并将
#newpassword1和#newpassword2标记为无效。
我知道我可以使用e.target.setCustomValidity(...) 将事件的目标标记为无效,但我不太了解 JavaScript 的事件模型,不知道如何标记一个不同的 根据事件目标自身的无效性,元素无效。
这是我尝试使用的(非工作)代码的相关摘录:
if ( $('#newpassword1').val() != $('#newpassword2').val() ) {
errorMessage = "The new passwords you've entered don't match.";
$('#newpassword1, #newpassword2').setCustomValidity(errorMessage);
}
从直觉上看,这似乎应该有效,但当然不是。错误只是TypeError: $(...).setCustomValidity is not a function。
请注意:我不是在问如何在字段中添加红环或其他任何东西,我希望它实际上 无效(如,使其 validity.valid 属性返回 false )。
可以这样做吗?
谢谢!
【问题讨论】:
-
我相信
setCustomValidity必须用于原生HTML对象,而不是jQuery对象,试试.get().setCustomValidity(errorMessage) -
我相信
$('#newpassword1, #newpassword2')[0].setCustomValidity(errorMessage);也会起作用 -
谢谢你们!
标签: javascript jquery html validation