if语句中的jquery提交表单

时间:2013-12-23 01:23:47

标签: jquery forms submit

当我点击每个按钮时,它会显示不同的表格。根据按下的按钮,提交不同的表单。这都显示在对话框中,但是当我点击发送时没有任何反应。有人可以帮我弄清楚什么是错的吗?

这是提交表单

的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" );
        }),

1 个答案:

答案 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 (...