好的,所以使用jQuery我拦截了表单的.submit(),我想创建一个自定义弹出窗口,向他们显示输入的数据并要求他们确认。如果他们点击确认按钮,则返回.submit()并返回true,但如果按下false,则他们不应继续前进,并有机会更改其条目。
我已经将弹出窗口设置为正常显示的窗体内容和显示的按钮。我不确定该怎么做是绑定按钮的单击功能,以便如果单击它,它将返回false给.submit(),如果单击另一个,则返回true .submit()
如果您需要我发布我的一些代码,请告诉我。
我不想使用确认对话,因为我希望它是一个自定义弹出窗口。
答案 0 :(得分:2)
您需要使用confirm()
对话:
var submit = confirm('Are you sure?');
if (submit) {
$(this).submit();
}
else {
return false;
}
通过对话向用户显示消息"Are you sure?"
,如果用户点击确认ok
按钮,对话框会将true
返回给变量submit
,否则返回false
。
如果返回false
(用户点击cancel
),则if
评估为false
,并执行else
。
答案 1 :(得分:0)
您需要将.submit()作为回调函数传递给对话框。这不是单行解决方案,而是您应该熟悉的模式。这个http://www.youtube.com/watch?v=hQVTIJBZook可能对本主题的某些内容以及您可能遇到的其他常见问题有所帮助
示例:
function openPopup(form) {
//
// Put whatever code you use to open you
// popup here
//
// Bind click handler to submit form if they click confim
$("#id_of_confim_button").on("click", function() {
// Get the form that was
form.submit();
});
// Bind click handler for cancel button
$("#id_of_cancel_button").on("click", function() {
//
// Code to close your popup
//
});
};
$("#id_of_form_submit_button").on("click", function(event) {
// Stops the form from submitting
event.preventDefault();
// Get the form you want to submit
var form = $("#form_being_submit");
// Call your 'open custom popup' function and pass
// the form that should be submitted as an argument
openPopup(form);
});
答案 2 :(得分:0)
仅捕获此表单提交的'click
事件将无法处理所有情况(例如,如果有人点击输入非文本区输入,表单也会提交)。
如果我想以异步方式处理提交,我曾经在原文被阻止之后手动触发submit
&引入isDirty
州:
(function () {
var isDirty = true;
$("form#id").on("submit", function ( evt ) {
if (isDirty) {
evt.preventDefault();
popup( "... params ...", function () {
// this will called, when the popup ensures the form can be submitted
// ... & it will be called by the popup
isDirty = false;
$("form#id").submit();
} );
}
});
})();