常规表单发布/重定向提交按钮,Jquery提交其他输入(验证)

时间:2010-10-12 11:23:02

标签: ajax forms jquery

我有一个表单,我正在使用Jquery提交表单以在屏幕的右侧创建预览输出(我有一些复杂的输入,并希望使用ruby来处理它们以创建预览) 。

用户完成表单并按下提交按钮后,我希望表单正常提交(即,好像没有使用Jquery)。有没有办法做到这一点?

我觉得这个问题的答案可能非常简单,我只是完全错过了一些东西。


以下是我提交选择按钮(用于验证)的方法

$('#body_message select').change(function() {
        $('form').submit();
      });

这是我当前处理提交按钮的代码。当用户单击提交按钮时,我会更改ID为“message_submit_button”的隐藏字段的值,因此此提交将与验证提交的处理方式不同。

$('#body_message input[type="submit"]').click(function() {
        $('#body_message #message_submit_button').val("1");
        $('form').submit(function(){
            $.ajax({
              type: 'POST',
              url: $(this).attr('action'),
              data: $(this).serialize(),
              success: XMLHttpRequest.getResponseHeader("Location"),
              dataType: "html"
            });
            return false;   
        });

  });



编辑: 使用答案的第一部分,我已将提交按钮上的Jquery更改为以下内容,并且它可以按预期工作:

$('#body_message input[type="submit"]').click(function() {
      $('#message_submit_button').val("1");
      $('form')[0].submit();    
});

1 个答案:

答案 0 :(得分:3)

您可以通过调用 native jQuery .submit()函数绕过form.submit()处理程序,如下所示:

$('form')[0].submit();

我会改变它:

$('#body_message input[type="submit"]').click(function() {
  $('#message_submit_button').val("1");
  var form = $(this).closest("form")
  $.ajax({
    type: 'POST',
    url: form.attr('action'),
    data: form.serialize(),
    success: XMLHttpRequest.getResponseHeader("Location"),
    dataType: "html"
  });
  return false;   
});

然后在你的其他按钮提交时...只是什么也不做,它会正常提交,这样处理程序只处理 这个提交按钮,而不是另一个应该正常提交的按钮。