这可能听起来倒退了。我需要一个表单提交return false,但仍然提交表单。
我有一个表单通过ajax(jquery加载函数)被拉入页面,并且在提交时我想在同一个div中显示图形和一些文本,而不是重定向页面。
这是我的提交按钮(codeigniter):
<?php $attributes = array('class' => 'button', 'onclick' => 'form_success_client(); return false;', 'name' => 'submit'); echo form_submit( $attributes, 'Save'); ?>
并在html中:
<input type="submit" onclick="form_success(); return false;" class="button" value="Save" name="submit">
和加载成功消息的javascript函数:
function form_success_client() { // form success
$('.contentarea').load("/mm/index.php/site/form_success_client/");
}
一切正常,但不出所料,它不提交表格。我知道这样做的正确方法是将表单提交传递给jquery,但我不知道该怎么做。如果可能的话,可以快速解决问题(直到我有时间对更好的解决方案进行排序),但所有建议都表示赞赏。
谢谢!
解答:
这对我有用,只是对Maggie的回答进行了轻微编辑:
function form_success_client(obj) {
$.ajax({
type: 'POST',
url: $(obj).attr('action'),
data: $(obj).serialize(),
success: function(msg){
$('.contentarea').load("/mm/index.php/site/form_success_client/");
}
});
return false;
}
注意在网址和数据上包装obj的$()。
答案 0 :(得分:2)
将JS onclick-event绑定到表单(而不是按钮),就像这样
'onclick' => 'form_success_client(this); return false;'
并将您的功能更改为
function form_success_client(obj) {
$.ajax({
type: "POST",
url: obj.attr("action"),
data: obj.serialize(),
success: function(msg){
$('.contentarea').load("/mm/index.php/site/form_success_client/");
}
});
}
的未测试强> 的
答案 1 :(得分:1)
可能的解决方案。我坚持你的代码
<input type="submit" onclick="form_success_client(this); return false;" class="button" value="Save" name="submit">
function form_success_client( i ) {
formData = $(i).parents('form').serialize();
$.post( "/mm/index.php/site/form_success_client/", formData, function(loaded) { $('.contentarea').append(loaded) }, 'html' );
}
编辑:是的,正如玛吉所说,你应该像那样绑定form_success_client(this); return false;
<form onsubmit="form_success_client(this); return false;">
不是按钮
答案 2 :(得分:0)
您可以使用jquery .post,.get或.ajax
根据SUCCESS或返回的数据,您可以提交表格
http://api.jquery.com/jQuery.get/