我有一个表单,我正在使用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();
});
答案 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;
});
然后在你的其他按钮提交时...只是什么也不做,它会正常提交,这样处理程序只处理 这个提交按钮,而不是另一个应该正常提交的按钮。