在JQuery-ajaxbeforesend中调用一个模态对话框来收集一些信息
Invoking a modal dialog to collect some information in JQuery ajax beforeSend
我正在使用引导程序和JQuery。我想知道在'$.ajaxbeforeSend'中进行ajax调用之前是否可以调用引导模式对话框?我想在提交表单之前收集用户评论。我的页面上有几个按钮需要这种行为。所以,我想让它更通用。
感谢
我建议使用jQuery的Deferred
对象(请参阅http://api.jquery.com/category/deferred-object/)。以下是按钮事件处理程序的伪代码:
$('#theButton').on('click', function() {
var dfd = $.Deferred();
// Code to show modal dialog here.
// Pass dfd to the dialog, and have it call dfd.resolve()
// when the user has finished, or dfd.reject() in case the
// user does not complete the form.
dfd.done(function() {
// Ajax call here
});
});
作为参数传递给dfd.done()
的函数只有在有人对Deferred对象调用resolve()
方法时才会被调用。
由于javascript中的异步事件模型,您不能推迟从beforeSend
中发送ajax请求。一旦执行了beforeSend
,您必须"延迟"ajax请求的唯一机会就是通过从回调返回false来完全取消它。
因此,虽然您可以跟踪一个状态变量,该变量知道表单是否准备好提交(只要表单还没有准备好,就会从beforeSend
返回false),但您最好在创建ajax请求之前先进行这些验证检查。
// why do this
$.ajax('/path', {
beforeSend: function () {
if (formIsNotReady()) {
showModal();
return false;
}
}
});
// when you can do this
if (formIsNotReady()) {
showModal();
} else {
$.ajax('/path');
}
相关文章:
- 着色引导框对话框
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- CKeditor:更改对话框中的默认选择选项
- 搜索api在mac上显示对话框
- 使用密码对话框Javascript请求帮助
- CKEditor v4:自制插件中对话框的动态标题
- 删除确认对话框在第一次单击时不起作用
- 使用jquery对话框中的箭头键
- 使用数据表行信息更新文本输入,并从对话框中编辑行
- 突出显示文本的各个部分并显示包含信息的对话框
- 模式对话框没有显示正确的信息
- 在JQuery-ajaxbeforesend中调用一个模态对话框来收集一些信息
- 带有表的ASP.NET MVC Jquery对话框显示行单击的详细信息
- Facebook API -我的信息共享对话框不打印
- JQuery UI对话框不能正常工作;错误信息“TypeError: undefined不是一个函数”
- 从javascript对话框发送信息到php
- 在bootstrap或其他jquery对话框中显示各种信息的最佳方式
- 选择输入字段时的信息对话框
- 从模态对话框中的ajax调用中删除缓存信息
- 带有提交按钮的Jqgrid信息对话框