La soluzione è semplicemente ... il nome del pulsante. Perchè lo chiedi? Ti mostrerò!
Prendere questo jsfiddle e notare che ho apportato solo alcune modifiche. Il javascript non è cambiato, solo l'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>
Ho fatto due cambiamenti:
- ho cambiato l'azione da una chiamata JavaScript per la compatibilità jsfiddle
- Ho modificato il nome del pulsante in modo diverso da inviare
Ho dovuto fare # 2 perché chiamare $ ('# myform'). Submit faceva riferimento al pulsante, non al metodo submit e jQuery ha ottenuto tutti i tipi di confusi. Rinominando il tuo pulsante, $ ('# myform'). Submit rimane la funzione di invio jQuery prevista e tutti sono felici.
Mi sono imbattuto in questo attraverso diverse iterazioni, che ho tenuto sotto per i posteri.
Buona fortuna!
======= post originale SOTTO ========
Se tutto quello che vogliamo fare è "risolvere questo", è possibile refactoring come segue:
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;
}
});
});
Stranamente, il seguito lavora s bene:
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;
}
});
});
L'unica cosa che ho cambiato qui è stato rimosso il pulsante di invio e il 100% inviare tramite jQuery.
return this.true? – dpmguise
Ci sono molti esempi su come inviare un modulo: ad esempio: http://stackoverflow.com/questions/11089200/using-jquery-ui-modal-dialog-to-submit-a-form – Jajo