【问题标题】:Prevent form submission if there is errors如果出现错误,阻止表单提交
【发布时间】:2011-10-21 13:50:40
【问题描述】:

基本上,如果用户编写的 ID 已经存在或太短,我有一个代码会向用户显示错误,但问题是我无法弄清楚如何防止表单在出现错误时提交。

需要弹出警告窗口的代码:

jQuery("#submit").click(function(e){

           if(error === '1')
           {
     alert("There are some errors in the form.");
     e.preventDefault();
           }
   });   

然后我使用 AJAX 得到答案并显示错误:

if(msg == 'OK')
{
var error = '0';
}
else
{
var error = '1';
jQuery("#idCheck_msg").slideDown("fast");
jQuery("#idCheck_text").text(msg).slideDown("fast");
}});
}

我试图用var error 做点什么,但Firebug 说没有定义错误,即使出现错误,表单也会提交。

有什么帮助吗? ;)

【问题讨论】:

  • 你是在 if 之前声明变量 error 吗?
  • 不,似乎我需要在 AJAX 响应之前和之外执行此操作,完全不知道我应该如何执行此操作。

标签: javascript jquery ajax var


【解决方案1】:

error 定义为全局变量。那就是在使用变量之前删除var

var error;
if(msg == 'OK')
{
    error = '0';
}
else
{
    error = '1';
...

【讨论】:

  • 就这么简单!谢谢朋友。
  • 重要提示:请注意,您需要在全局级别使用var定义变量,然后在不使用var 的情况下简单地引用它关键词。想想var 就像CreateThis。显然,当您只想访问/设置它时,您不需要使用var
【解决方案2】:

您似乎在在提交表单之后设置error的值,但在提交表单之前检查它的值。

鉴于您帖子中的代码,当您尝试检查它的值时,error 将是未定义的。此外,在提交表单后,error 仍将是未定义的,因为您使用 var 关键字在 AJAX 响应处理程序的范围内声明它。

如果您在设置 error 的值时从 AJAX 处理程序中删除了 var 关键字,那么您的提交逻辑应该会再次运行。

底线:error 的值需要在您的表单提交之前设置,而不是在 AJAX 响应处理程序中设置。

【讨论】:

    【解决方案3】:

    什么时候进行 AJAX 调用?在您从 AJAX 调用获得成功响应之前,您将无法检查“错误”。您还需要删除“var”,使其处于全局范围内。

    如果在提交表单时也进行了 AJAX 调用,则需要将错误检查移至处理 AJAX 响应的代码内部。

    【讨论】:

    • 它是在其中一个字段值更改时生成的(就像我说它检查 ID 是否已经存在于.change()
    猜你喜欢
    • 1970-01-01
    • 2023-02-08
    • 2021-10-10
    • 2013-04-12
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    相关资源
    最近更新 更多