我从数据库中填充了一个表。每一行都有一个复选框。当你选择(多个)复选框时,我希望能够按下:
- 一个按钮可更改所有选中行的$row->状态
- 另一个按钮,用于将每个选中行的内容转换为表单元素。(我在视图中选择了不同的模板,具体取决于是否为
isset($_POST['ap'])
) - 然后我需要一个提交按钮来保存对这些行的任何更改
我正在使用codeigniter,并且一直在使用jquery.form提交表单。
我的主要问题是将下面的两个函数结合起来,并使代码尽可能地可重用(对于不同的数据,我有几个类似的页面)。$('.form_js')
反馈validation_errors();
,但不允许不同的表操作。
提前感谢
这是我当前的代码:
$('.form_js').submit(function(){
var options = { target: $(this).find(".error")};
$(this).ajaxSubmit(options);
return false;
});
function form_action(controller){
var original_url = window.location;
var form = $("#ap_table");
var list = $(':checkbox[name="ap[]"]:checked').map(function(){
return $(this).val();
}).get().join(',');
alert(base_url + controller + "?ap=" + list);
form.attr('action', base_url + controller + "?ap_id=" + list);
return false;
}
我用全新的思维和代码做到了这一点。
$('input[type=submit]').click(function()
{
var form = $("#numbers");
var submit_button = $(this).attr('value');
if(submit_button == 'Cancel' || submit_button == 'Pause')
{
var controller = 'numbers/status_msg/' + submit_button;
var list = $(':checkbox[name="phone_id[]"]:checked').map(function(){
return $(this).val();
}).get().join(',');
form.attr('action', base_url + controller + '?ids=' + list);
}
/*if($(this).attr('value') == 'Multi Edit')
{
//allow form to submit to default action '#'
}*/
if($(this).attr('value') == 'Save All')
{
var controller = 'numbers/multi_update/';
var options = { target: $(form).find(".error")};
form.attr('action', base_url + controller );
alert(form.attr('action'));
$(form).ajaxSubmit(options);
return false;
}
});
然后在"numbers/multi_update"加载视图中成功提交:
if($("input[name=redirect]").val())
{
//Add $insert_id to the redirect url
var redirect_url = $("input[name=redirect]").val() + "/<?php echo $insert_id; ?>";
//redirect
window.location = base_url + redirect_url;
}
这是有效的,但有更简单的方法吗?