当我点击每个按钮时,它会显示不同的表格。根据按下的按钮,提交不同的表单。这都显示在对话框中,但是当我点击发送时没有任何反应。有人可以帮我弄清楚什么是错的吗?
这是提交表单
的jquery $( "#contact_form" ).dialog({
autoOpen: false,
height: 600,
width: 500,
modal: true,
buttons: {
"Send": (function() {
if(submitbutton == 1){
$("#schedule_info").submit(function () {
sendContactForm();
$( this ).dialog( "close" );})
}
else if(submitbutton == 2){
$("#contact_info").submit(function () {
sendContactForm();
$( this ).dialog( "close" );})
}
else if(submitbutton == 0){
$("#error").css("display", "");
}
}),
这是更改活动表单的jquery:
var submitbutton = 0;
$(document).ready(function () {
$( "#schedule_trigger" )
.button()
.click(function() {
$("#schedule_info").css("display", "");
$("#contact_info").css("display", "none");
$("#error").css("display", "none");
$("#schedule_trigger").blur();
submitbutton = 1;
});
$( "#contact_trigger" )
.button()
.click(function() {
$("#schedule_info").css("display", "none");
$("#contact_info").css("display", "");
$("#error").css("display", "none");
$("#contact_trigger").blur();
submitbutton = 2;
});
});
在我将第二个表单添加到对话框
之前,此代码工作得很好 "Send": (function() { $("#contact_info").submit(function () {
sendContactForm();
return false;
});
$( this ).dialog( "close" );
}),
答案 0 :(得分:1)
在jQuery对象上调用.submit()
不会提交表单。它为表单的“submit”事件注册了一个事件处理程序。
要提交表单,您需要在实际表单元素上调用.submit()
,如下所示:
$("#schedule_info")[0].submit()
更新:
如果您不想离开当前页面,则无法提交如上所示的表单。它必须通过ajax提交。
然而,您的旧代码无法正常工作。它会关闭对话框,但它不会提交表单。如果表单已通过其他方式提交,它也会注册一个事件监听器。但这绝不会发生,因为表单没有提交按钮。如果事件监听器已被执行,则会导致错误,因为sendContactForm()
方法不存在。
如果您现在想通过ajax提交表单,可以执行以下操作:
"Send": (function() {
if (submitbutton == 1) {
var $form = $('#schedule_info');
$.ajax($form.attr('action'), {
type: $form.attr('method'), // You could just hard-code this to 'post'.
data: $form.serialize(),
dataType: 'html', // This causes the "response" parameter to the success
// callback to get left as a string. Change to 'json'
// if you want the response automatically parsed to an
// object.
success: function(response) {
alert(response); // Handler the response here.
}
});
$(this).dialog("close");
} else if (...