несколько действий формы, возвращать любые ошибки проверки и обновлять результаты при успешной отправке - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть таблица, заполненная из базы данных. В каждой строке есть флажок. Когда вы выбираете (несколько) флажков, я хочу иметь возможность нажать:

  • одна кнопка для изменения $ row-> status для всех отмеченных строк
  • еще одна кнопка для преобразования содержимого каждой проверенной строки в элементы формы (я делал это, выбирая различные шаблоны в представлении в зависимости от того, * 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 голосов
/ 21 февраля 2012

Мне удалось сделать это со свежим умом и этим кодом.

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

}

Это работает, но есть ли более простой способ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...