我有表格,用户可以删除帐户。这是非常简单的形式。我希望用户确认删除该帐户。我有功能确认。我无法编辑它。
function confirmation(message, ok, cancel, callback) {
if (!$('#confirmation').length) {
var string =
'some html';
$('<div/>').attr('id', 'confirmation').css("display", "none").html(string).appendTo('body');
}
var result;
$.fancybox($('#confirmation'), {
modal : true,
autoSize: true,
beforeShow: function() {
$("#confirmation-message").text(message);
$("#confirmation-ok-caption").text(ok);
$("#confirmation-cancel-caption").text(cancel);
$("#confirmation-btn-ok").unbind("click").bind("click", function() {
result = true;
$.fancybox.close();
return false;
})
$("#confirmation-btn-cancel").unbind("click").bind("click", function() {
result = false;
$.fancybox.close();
return false;
})
},
afterClose: function() {
callback.call(this, result);
}
});
}
此代码不起作用,它不发送表单:
$(document).ready( function(){
$("form").submit(function() {
confirmation("Delete?", "Yes", "No", function (result) {
if(result) $("#user-form").submit();
});
return false;
})
});
我该如何编辑代码?
如果我按return false;
格式更改return true
,则 UPD 会一直发送!
答案 0 :(得分:0)
看起来你有一个无限循环:
提交表单时,您是
(1)
运行confirmation
函数来验证表单,如果一切正常,那么你就是
(2)
使用submit
触发$("#user-form").submit();
,这会导致浏览器返回(1)
,此循环将永远不会结束。
有几种方法可以解决这个问题。我想最快的方法是有一个全局变量来告诉你表单是否经过验证,如果是的话 - 在调用true
之前在submit
函数内返回confirmation
:
var formConfirmed = false;
function confirmation(message, ok, cancel, callback) {
...
提交功能内部:
$(document).ready( function(){
$("form").submit(function() {
if (formConfirmed) {
return true;
}
不要忘记在formConfirmed = true
代码中设置fancybox
。