我在问这些问题方面是新成员,但我已经阅读了很多文章/问题/答案已经有一段时间了。我的问题是关于代码的一部分让我卡住了一段时间。
因此,在我的项目中,我获得了一个具有JS验证和服务器端验证的注册表单。现在我想要做的是在JS验证没问题之前禁用表单提交,并且我已经为它设置了一些条件。现在遇到这些条件时出现了问题。我使用这一行来阻止表单提交:
$('.memberReg').on('submit',function(){return false;});
例如在这种情况下:
if(response.okText == 'SUCCESS' && response.warning == null )
{
$('label[for="email"]').addClass("success");
$('label[for="email"]').append("<span> is not yet registered!</span>");
console.log(result);
}else
{
$('label[for="email"]').addClass("error");
$('label[for="email"]').append("<span> is already taken!</span>");
$('.memberReg').on('submit',function(){return false;});
}
这里发生的事情是我确实阻止了提交表单,但是即使满足其他条件,它也会被完全阻止。在此示例中,即使使用正确的电子邮件,您也无法再提交。
我尝试使用带有true-false语句的变量,这会使validForm()函数提交表单,但是函数开始循环并且仍然没有启用表单。
我也尝试在有效的电子邮件部分中使用return true表示提交,效果仍然相同。
任何人都知道如何在某种情况下阻止它而不完全阻止它,以便用户在发送时必须刷新?
答案 0 :(得分:1)
我相信我弄清楚了,经过几次测试后它运行顺畅,所以我会发布它以防其他人可能遇到同样的问题。
所以一开始我用过:
mutable
其中一位优秀的人在他的一个答案中告诉我,这覆盖了提交处理程序。所以我尝试将我的方法改变为我想要实现它的方式并使用:
$('.memberReg').on('submit',function(){return false;});
在条件下,我正在检查我在字段验证中设置的变量,如果输入错误,我会使用$( ".memeberReg" ).submit(function( event ) {
if ( condition ) {
//successfulValidationCode
return;
}
//errorCode
event.preventDefault();
})
再次阻止表单。
答案 1 :(得分:0)
问题是你要覆盖提交处理程序,一旦覆盖它,它就会一直消失,直到重新加载页面。我会完全质疑这种方法是诚实的;您不必覆盖提交处理程序以阻止提交表单。
顺便说一句,您使用的是JavaScript验证,而不是AJAX验证。 AJAX是向服务器发送请求并可能接收结果的过程,而不刷新页面