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

时间:2012-02-20 18:17:47

标签: php jquery forms codeigniter

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

  • 一个按钮,用于更改所有已检查行的$ 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;
}

1 个答案:

答案 0 :(得分:0)

我设法以一种清新的头脑和这段代码来做到这一点。

$('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;

}

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