表单提交阻止问题

时间:2016-05-23 11:34:25

标签: javascript ajax forms submit

我在问这些问题方面是新成员,但我已经阅读了很多文章/问题/答案已经有一段时间了。我的问题是关于代码的一部分让我卡住了一段时间。

因此,在我的项目中,我获得了一个具有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表示提交,效果仍然相同。

任何人都知道如何在某种情况下阻止它而不完全阻止它,以便用户在发送时必须刷新?

2 个答案:

答案 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是向服务器发送请求并可能接收结果的过程,而不刷新页面