【发布时间】:2016-04-30 17:38:05
【问题描述】:
我正在对下面要讨论的所有内容使用 jquery 验证。
所以我有一个输入字段,我们称之为电子邮件。我也有这个表单的提交按钮。现在默认情况下,在我点击提交按钮之前,电子邮件字段的错误消息不会出现。然后,每当我键入它时,它都会显示/隐藏错误消息,具体取决于它是否是有效的电子邮件。每次击键都会进行此检查,这是一个非常重要的区别,以便您了解我在下面发布的问题。
现在我在输入上有一个背景色,当验证通过时它是绿色的,当它失败时是红色的。我有这部分工作,让我告诉你我是怎么做到的:
window.onload = function () {
$(".js-validate-circle").on("input", function () {
UpdateValidationCircle(this);
});
}
function UpdateValidationCircle(e) {
if ($(e).valid()) {
$(e).parent().addClass("active");
} else {
$(e).parent().removeClass("active");
}
}
active 类决定了它是绿色还是红色。我认为有些样式与问题无关,所以我不会在这里发布。
这是我的问题:当页面加载并开始输入时,它会强制触发验证,并且在我第一次单击提交按钮之前开始出现错误消息。我试图阻止这种情况。我希望只有在点击提交按钮后,开始输入的颜色才会改变。我的红色/绿色背景的功能应该与 jquery 验证消息匹配。
我将如何完成这样的事情?我尝试使用 on change 但只有当框失去焦点时才会触发验证。
【问题讨论】:
-
你说的是 jQuery Validate 插件吗?如果是这样,其余的代码在哪里?打电话给
.validate()? HTML 标记? -
@Sparky HTML 标记对这个问题毫无意义,所以我没有发布它,我也没有在代码中的任何地方调用 .validate() 。这是一个纯 jquery/javascript 问题。 .valid() 调用 .validate(),根据我的在线研究,这不是记录的方式,而是它的行为方式。出于这个原因,我的验证在第一次击键时就开始了。如果 valid() 没有调用 validate,那么我的行为会完全符合我的要求。
-
如果不先调用
.validate(),您将无法使用.valid(),并且如果不包含jQuery Validate 插件,您将无法使用任何一种方法。请参阅:".validate()needs to be called on the form before checking it using this method"。
标签: javascript jquery validation