Giải pháp đơn giản là ... tên nút của bạn. Lý do tại sao bạn hỏi? Tôi sẽ cho bạn thấy!
Hãy thực hiện điều này jsfiddle và thông báo rằng tôi chỉ thực hiện một vài thay đổi. Javascript đã không thay đổi, chỉ 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>
Tôi đã thực hiện hai thay đổi:
- Tôi đã thay đổi hành động để có một cuộc gọi javascript để tương thích jsfiddle
- Tôi đã đổi tên nút của bạn thành một tên khác ngoài gửi
Tôi đã phải làm # 2 bởi vì gọi $ ('# myform') .đã được tham chiếu nút, không phải là phương pháp gửi, và jQuery có tất cả các loại lẫn lộn. Bằng cách đổi tên nút của bạn, $ ('# myform'). Submit vẫn là chức năng gửi jQuery mong đợi và mọi người đều hạnh phúc.
Tôi tình cờ hiểu được điều này thông qua một số lần lặp lại mà tôi đã lưu dưới đây cho hậu thế.
Chúc may mắn!
POST ORIGINAL ======= DƯỚI ========
Nếu tất cả các bạn muốn làm là "giải quyết việc này", bạn có thể cấu trúc như sau:
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;
}
});
});
Nhưng kỳ lạ, dưới đây làm việc một s cũng:
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;
}
});
});
Điều duy nhất tôi đã thay đổi ở đây đã được gỡ bỏ nút gửi và 100% nộp qua jQuery.
trả lại this.true? – dpmguise
Có rất nhiều ví dụ về cách gửi biểu mẫu: ví dụ: http://stackoverflow.com/questions/11089200/using-jquery-ui-modal-dialog-to-submit-a-form – Jajo