确认的形式提交
我想显示一个确认(更准确地说是弹出式)时,形式是成功submitted.Previously我使用Ajax验证表单和显示弹出,但现在我想达到同样的没有Ajax。
在成功提交表单后调用javascript/jquery中是否有任何事件?还是有其他可用的替代方案吗?确认的形式提交
谢谢!
编辑1:
我使用Spring 3.0。
下面是详细情况
1.用户填写表格,然后点击提交
2.请求将被发送到控制器(服务器端)
3.验证将在服务器端进行,
4.如果错误是否存在我正在使用Spring验证来显示它并转到步骤1
5. else成功提交表单并显示一个弹出窗口。
6.用户点击弹出窗口重定向到其他页面后。
编辑2:
我完全认为Ajax是做正确的/最佳方式同意并我已经使用Ajax实现它。但客户希望使用非Ajax方法,我不能超越他的话。
这个问题引起了我的好奇心,我试图做同样的事情用iframe解决方案suggested通过Leon。最后,我成功了,但是,我想建议,而不是使用直接onload
属性,利用jQuery .load()
event上的iframe中。
编辑:因此,这里是我如何设置的形式(使用HTML5,所以引号是没有必要的):
<div id=message></div> /* Example-specific, see below */
<form method=post action=backend.php target=iframe>
// Form data here
</form>
<iframe name=iframe></iframe>
添加以下CSS代码隐藏的iframe:
iframe {
border:0px;
height:0px;
visibility:hidden;
width:0px;
}
不要使用display:none
,因为一些浏览器将拒绝服从,这不是显示的元素。
然后在我的$(document).ready()
的JavaScript ...
$('iframe').load(function(){
// Your load event here.
});
你也可以改变一下,使之明确具体的事件之后才会触发(如果你使用动态的形式,例如)。在这种情况下,你可能需要使用.unbind('load')
之前,以防止调用预先添加的功能。
现在提交表单时,它加载到隐藏的iframe。当IFRAME加载页面(backend.php,在我的例子),它触发功能。在我的具体情况下,我设置了一个<div id=message>
以显示一条消息:
$('iframe').load(function(){
$('#message').html('The form successfully submitted.');
});
我不确定你正在编码哪种语言。 一个选项 - 使用javascript。
在提交按钮onclick事件(客户端事件)上,如果页面有效,则执行页面验证并弹出显示警报。
<script type="text/javascript">
function OnSubmitClientClick() {
Page_ClientValidate();
if (Page_IsValid) {
alert('Form has been successfully submitted.');
return true;
}
}
</script>
我正在使用服务器端验证。 – xyz 2012-02-01 06:14:01
您仍然可以执行服务器端验证。这将在提交时首先执行客户端验证,如果页面有效,则显示弹出窗口,然后执行服务器端验证。 – NomadTraveler 2012-02-01 06:19:35
请检查我的编辑。我想在服务器端验证后显示弹出窗口。 – xyz 2012-02-01 06:21:26
为什么要放弃AJAX方法?没有AJAX,服务器端验证意味着页面重新加载。在页面重新加载时,您将失去客户端(JS)状态。
一种替代方法是使用隐藏框架/ iframe /新窗口在表单提交上执行服务器端验证(可能使用您在问题中提到的弹出窗口)。在我看来,这不是正确的方法(A BIG NO)。您可能更愿意坚持使用AJAX,或者使用非AJAX的表单提交方式。
感谢您的意见。我完全同意它,我已经以相同的方式实施它,但客户回答了A BIG NO,并要求(命令)将其删除。 – xyz 2012-02-01 08:38:25
没有Ajax?没问题 - 让我们回去如何在Web真正使用在过去;-)
工作因为我得到你不想刷新当前页面,这个怎么样的方法:
- 具有相同的页面上隐藏的iframe,一个名字& ID
- 点表单的目标属性,以在上一步
- 提交表单现在将“隐藏”
- 你可以给名称iframe上的onload属性设置为javascript会见你喜欢的HOD到被调用,一旦形成最终提交
- 的JavaScript代码也可以检索iframe的内容,并检查你的服务器端的响应(甚至包括错误MSG)
- 通知用户有关导致
这一切很容易设置,让我们知道它是如何工作的亚..
无AJAX发送是往返服务器。页面重新加载。除此之外别无选择。那么,您是在寻找页面重新渲染的模式,还是在您提交表单提交“请稍候,我们提交您的数据”时阻止用户界面? – 2012-02-01 05:17:39
@飞溅-X:我要像展示的通知'形式是成功submitted.' – xyz 2012-02-01 05:25:03
您正在使用什么服务器端语言?无论您需要将表单内置到您提交表单后呈现的页面中的语言如何,如果您选择重新加载他们刚刚提交的同一页面,并显示您选择的消息泡泡。您希望使用的插件类型取决于您希望显示消息的方式。如果你想要一个模式,你可以使用jQuery UI模式,Fancybox或事件BlockUI。你也可以选择使用你的服务器端语言来渲染出你的信息的div或p。 – 2012-02-01 05:33:22