Javascript 表格提交确认书

Javascript 表格提交确认书,javascript,jquery,forms,Javascript,Jquery,Forms,我想在表单成功提交时显示一个确认(更准确地说是一个弹出窗口)。以前我使用Ajax验证表单并显示弹出窗口,但现在我想在没有Ajax的情况下实现相同的 javascript/Jquery中是否存在在表单提交成功后调用的事件?或者还有其他选择吗 谢谢 编辑1: 我正在使用Spring 3.0。 下面是详细的场景 1.用户填写表格并单击提交 2.请求将发送到控制器(服务器端) 3.验证将在服务器端完成 4.如果存在错误,我将使用Spring验证来显示它,并转到步骤1 5.否则将成功提交表单并显示弹出窗

我想在表单成功提交时显示一个确认(更准确地说是一个弹出窗口)。以前我使用Ajax验证表单并显示弹出窗口,但现在我想在没有Ajax的情况下实现相同的
javascript/Jquery中是否存在在表单提交成功后调用的事件?或者还有其他选择吗

谢谢


编辑1:
我正在使用Spring 3.0。
下面是详细的场景
1.用户填写表格并单击提交
2.请求将发送到控制器(服务器端)
3.验证将在服务器端完成
4.如果存在错误,我将使用Spring验证来显示它,并转到步骤1
5.否则将成功提交表单并显示弹出窗口。
6.用户单击弹出窗口后,重定向到其他页面


编辑2:

我完全同意Ajax是正确/最好的方法的观点,我已经用Ajax实现了它。但客户希望使用非ajax方法,我无法超越他的话。

我不确定您使用的是哪种语言编写代码。 一个选项是使用javascript

在提交按钮onclick event(客户端事件)上,执行页面验证并显示警报弹出窗口(如果页面有效)

<script type="text/javascript">
    function OnSubmitClientClick() {
        Page_ClientValidate();
        if (Page_IsValid) {
             alert('Form has been successfully submitted.');
            return true;
        }
    }
 </script>

SubmitClientClick()上的函数{
Page_ClientValidate();
如果(第页有效){
警报('表单已成功提交');
返回true;
}
}

我不确定您使用的是哪种语言。 一个选项是使用javascript

在提交按钮onclick event(客户端事件)上,执行页面验证并显示警报弹出窗口(如果页面有效)

<script type="text/javascript">
    function OnSubmitClientClick() {
        Page_ClientValidate();
        if (Page_IsValid) {
             alert('Form has been successfully submitted.');
            return true;
        }
    }
 </script>

SubmitClientClick()上的函数{
Page_ClientValidate();
如果(第页有效){
警报('表单已成功提交');
返回true;
}
}

为什么要放弃AJAX方法?没有AJAX,服务器端验证意味着页面重新加载。在页面重新加载时,您将丢失客户端(JS)状态


一种替代方法是使用隐藏框架/iframe/新窗口在表单提交时执行服务器端验证(可能使用您在问题中提到的弹出窗口)。在我看来,这不是正确的方法(一个很大的否定)。您可能宁愿坚持使用AJAX,也可以使用非AJAX的表单提交方式。

为什么要放弃AJAX方法?没有AJAX,服务器端验证意味着页面重新加载。在页面重新加载时,您将丢失客户端(JS)状态


一种替代方法是使用隐藏框架/iframe/新窗口在表单提交时执行服务器端验证(可能使用您在问题中提到的弹出窗口)。在我看来,这不是正确的方法(一个很大的否定)。您可能宁愿坚持使用AJAX,也可以使用非AJAX的表单提交方式。

不使用AJAX?没问题-让我们回到过去网络是如何工作的;-)

既然我发现您不想刷新当前页面,那么这种方法如何:

  • 在同一页上有一个隐藏的iframe,名称为&id
  • 将窗体的目标属性指向上一步中给定的名称
  • 提交表单现在将被“隐藏”
  • 您可以将iframe上的onload属性设置为希望在表单提交完成后调用的javascript方法
  • 该javascript代码还可以检索iframe的内容并检查服务器端响应(甚至可能包括错误消息)
  • 将结果通知用户

  • 这一切都很容易设置,让我们知道它在没有Ajax的情况下是如何工作的。

    ?没问题-让我们回到过去网络是如何工作的;-)

    既然我发现您不想刷新当前页面,那么这种方法如何:

  • 在同一页上有一个隐藏的iframe,名称为&id
  • 将窗体的目标属性指向上一步中给定的名称
  • 提交表单现在将被“隐藏”
  • 您可以将iframe上的onload属性设置为希望在表单提交完成后调用的javascript方法
  • 该javascript代码还可以检索iframe的内容并检查服务器端响应(甚至可能包括错误消息)
  • 将结果通知用户

  • 这一切都很容易设置,让我们知道它是如何为你工作的。

    这个问题激发了我的好奇心,因为我正试图使用Leon的iframe解决方案做类似的事情。但是,最终我成功了,我建议您不要使用直接
    onload
    属性,而是使用iframe上的

    编辑:下面是我如何设置表单(使用HTML5,因此不需要引号):

    不要使用
    display:none
    ,因为某些浏览器会拒绝提交未显示的元素

    然后在我的JavaScript中

    $('iframe').load(function(){
      // Your load event here.
    });
    
    您还可以将其更改为about,使其仅在特定事件之后触发(例如,如果您使用的是动态表单)。在这种情况下,您可能希望在
    .load()
    之前使用
    .unbind('load')
    ,以防止先前添加的
    .load()
    函数调用

    现在,当表单提交时,它将加载到隐藏的iframe中。当iframe加载页面(在我的示例中是backend.php)时,它会触发
    .load()
    函数。在我的特定情况下,我设置了一个
    来显示一条消息:

    $('iframe').load(function(){
        $('#message').html('The form successfully submitted.');
    });
    

    这个问题激起了我的好奇心,因为我正试图用Leon的iframe解决方案做类似的事情。但是,最终我成功了,我建议您不要使用直接
    onload
    属性,而是使用iframe上的

    编辑:下面是我如何设置表单(使用HTML5,因此不需要引号):

    $('iframe').load(function(){
        $('#message').html('The form successfully submitted.');
    });