Решение - просто ... ваше имя кнопки.Почему ты спрашиваешь?Я покажу вам!
Возьмите это jsfiddle и обратите внимание, что я только внес несколько изменений.Javascript не изменился, только HTML
HTML
<form id="myform" action="javascript:alert('Success!')" method="post">
<input type="text" name="check_me" />
<input type="submit" name="btnSubmit" value="Go!" />
</form>
<div id="confirm" style="display:none;">Please confirm that you want to submit</div>
Я сделал два изменения:
- Я изменилдействие, чтобы быть вызовом javascript для совместимости с jsfiddle
- Я изменил имя вашей кнопки на что-то отличное от submit
Я должен был сделать # 2, потому что вызывал $ ('# myform').submit ссылался на кнопку, а не на метод submit, и jQuery запутался во всех его проявлениях.Переименовав вашу кнопку, $ ('# myform'). Submit остается ожидаемой функцией отправки jQuery, и все довольны.
Я наткнулся на это, пройдя несколько итераций, которые я оставил ниже для потомков..
Удачи!
======= ОРИГИНАЛЬНАЯ ПОЧТА НИЖЕ ======= *
Если все, что вы хотитечтобы сделать это «решить эту проблему», вы можете выполнить рефакторинг следующим образом:
HTML
<form id="myform" action="#" method="post">
<input type="text" name="check_me" />
<input type="button" id="btnSubmit" value="Go!" />
</form>
<div id="confirm" style="display:none;">Please confirm that you want to submit</div>
JavaScript
$(document).ready(function(){
var submitForm = $('#myform');
submit = false;
$("#confirm").dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: false,
buttons: {
'Submit': function() {
$(this).dialog('close');
submit = true;
submitForm.submit();
},
'Cancel': function() {
$(this).dialog('close');
}
}
});
$("#confirm").parent().appendTo($("#myform"));
$("#btnSubmit").click(function() {
$("#confirm").dialog('open');
});
submitForm.submit(function() {
if (submit) {
return true;
}
});
});
Как ни странно, ниже работает также:
HTML
<form id="myform" action="javascript:alert('success!');" method="post">
<input type="text" name="check_me" />
<input type="button" id="btnSubmit" value="Go!" />
</form>
<div id="confirm" style="display:none;">Please confirm that you want to submit</div>
JavaScript
$(document).ready(function(){
var submitForm = $('#myform');
submit = false;
$("#confirm").dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: false,
buttons: {
'Submit': function() {
$(this).dialog('close');
submit = true;
$('#myform').submit();
//submitForm.submit();
},
'Cancel': function() {
$(this).dialog('close');
}
}
});
$("#confirm").parent().appendTo($("#myform"));
$("#btnSubmit").click(function() { $('#myform').submit(); });
submitForm.submit(function() {
if (submit) {
return true;
} else {
$("#confirm").dialog('open');
return false;
}
});
});
Единственное, что я здесь изменил, это убрал кнопку отправки и 100% отправку через jQuery.