Jquery表单-两个按钮-一个使用ajax,一个不使用
jquery form - two buttons - one to use ajax, one not
我有一个表单,我想在提交之前使用jquery对表单进行验证。如果我单击其中一个按钮,我让它通过ajax调用保存数据。对于另一个按钮,我想提交表单,但不让它通过ajax,只是用传统的方式提交,然后进入那个页面。
我在我的validate()函数中有submitHandler,它非常适合做ajax的东西,但是对于我不想使用ajax的其他按钮呢?我从validate()函数中删除submitHandler部分吗?如果是这样,那么我应该如何设置使用ajax?我要把它放在事件处理程序中吗?如果是,我应该如何设置它?
你不能只是创建2个不同的函数或只是一个参数化的布尔值,以表明是否发送ajax请求或只是提交表单?后者可以使用JQuery的submit函数来完成。
我认为最好的方法是绑定一个个人事件
$('form').on('submitajax submit', function(e){
if(e.type === 'submitajax'){
//ajaxstuff
}
else{
//classic stuff
}
})
你的ajax按钮将触发submitajax事件
您的验证函数可以像这样:
function bar( ajax )
{
var valid = true, fooForm = $('#fooForm');
// do validation stuff
if( !valid ) return;
if( ajax ){
$.post(fooForm.attr('action'), fooForm.serialize());
}else{
fooForm.submit();
}
}
和你的按钮:
<input type="button" value="With Ajax" onclick="bar( true )" />
<input type="button" value="Old Fashion" onclick="bar( false )" />
提交表单时需要检查JavaScript事件。只考虑form:
<form class="js-form">
<a class="js-save">Save</a>
<input type="submit" value="Submit"/>
</form>
$('.js-from').on('click', function(event){
if (event.target === event.currentTarget){
# Triggers on click submit input that triggers as part of form and target same
# Call ajax stuff
} else {
# Triggers on click link witch is fired as click as not a part of form
# Call other ajax or link stuff
}
});
一个检查表单是否在提交按钮或链接上提交的函数,可以做任何其他事情
我明白了。在我的ajax按钮单击事件处理程序中,我需要添加event.preventDefault ();然后,我可以将$.ajax()调用添加到我想要调用ajax的地方,而对另一个只是正常地进行提交。
感谢您的回复,这是一个有趣的练习,我学到了更多关于这种类型的编码的复杂性。
相关文章:
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 一个ajax循环有两个输出错误innerHTML
- 另一个Ajax函数触发的Ajax函数不起作用
- 如何在调用下一个请求之前完成第一个Ajax Get请求
- 为主题选项(部分)创建一个ajax处理的保存操作
- 如何在下一次 AJAX 调用中访问从一个 AJAX 调用返回的变量
- 使用 jquery.when 和 done 将值从一个 ajax 调用传递到另一个
- 嵌套另一个 Ajax 请求时,Ajax 响应处理中断
- 一个Ajax函数能产生另一个Ajax功能吗
- Ajax获取数据以获取另一个Ajax数据
- 我可以在React和Redux中发送一个AJAX调用,而不需要操作创建者和还原器吗
- 我正在尝试实现一个AJAX调用.我做错了什么
- 当一个ajax是SUCCESS时,下一个加载
- 每当表单输入字段发生更改时,都会发送一个ajax请求
- 在慢速网络上,上一个Ajax请求会被下一个取消
- 将ajax请求添加到上一个ajax请求所附加的元素中
- 在ajax html返回中调用ajax会阻止第一个ajax脚本进一步工作
- 从 for 循环内的 AJAX 链中的最后一个 AJAX 请求返回值
- 使用另一个 ajax 脚本更改页面内容后,AJAX 脚本不起作用
- 一个 ajax 处理程序或多个处理程序