2010-10-12 115 views
0

我有一个表单,我正在使用Jquery提交表单,以在屏幕右侧创建预览输出(I有一些复杂的输入,并希望使用红宝石来处理它们来创建预览)。定期提交表单提交/重定向提交按钮与JQuery提交其他输入(验证)

在用户完成表单并按下提交按钮后,我希望表单正常提交(即,就好像没有使用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();  
}); 

回答

3

你可以通过调用原生form.submit()功能绕过jQuery .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; 
}); 
在其他按钮

然后...只是什么都不做,它会正常提交,这样,这个处理程序处理只有这个提交按钮,而不是其他人应该做正常的提交。

+0

是的!非常感谢。你说的第一件事情非常出色(包括更新的问题)。 – amt1983 2010-10-12 11:40:45