多个表单操作,返回任何验证错误,并在成功提交时刷新结果


multiple form actions, return any validation errors and refresh results on successful submission

我从数据库中填充了一个表。每一行都有一个复选框。当你选择(多个)复选框时,我希望能够按下:

  • 一个按钮可更改所有选中行的$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;
}

这是有效的,但有更简单的方法吗?