Отправлять те же самые входы для разных действий с одной формой

У меня есть два поля ввода и Я хочу опубликовать те же данные в двух разных php файлах, в зависимости от того, какая кнопка нажата.

В моем случае данные идут только в foo.php, но не в excel.php.

Я хочу, чтобы данные переходили к excel.php, если нажата вторая кнопка.


JS

$(function() {

  $("#from").datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 3,
    onClose: function(selectedDate) {
      $("#to").datepicker("option", "minDate", selectedDate);
    }
  });

  $("#to").datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 3,
    onClose: function(selectedDate) {
      $("#from").datepicker("option", "maxDate", selectedDate);
    }
  });

});

HTML:

<form action="foo.php" method="post">
     <label for="from">From</label>
     <input type="text" id="from" name="from" />

     <label for="to">to</label>
     <input type="text" id="to" name="to" /> <br>

     <input type="submit" value="Viewchart">
</form>

<form action="excel.php" method="post">
     <input type="submit" value="Download Excel file">
</form>

Ответ 1

Вы можете изменить атрибут action при нажатии кнопки следующим образом:

$(function() { 
    $( ".actionable" ).click( function() {
        $('#myForm').attr('action', $(this).data("action"));
        $('#myForm').submit();
    });
});

И установите следующие атрибуты data-* для ваших кнопок:

<form name="form" id="myForm" method="post">
    <input type="submit" class="actionable" value="Viewchart" data-action="foo.php"/>
    <input type="submit" class="actionable" value="Excel" data-action="excel.php"/>
</form>

Вы можете увидеть, как это работает здесь.


Ссылки по теме:


Разъяснение для OP:

Блок $( function() {} ); -эквивалентен $(document).ready( function() {} ); - указать функцию, выполняемую при полной загрузке DOM; вы должны помещать внутри всего вашего кода, который взаимодействует с элементами DOM.

Ответ 2

Это можно сделать следующим образом: script и небольшое изменение во втором объявлении формы

для второй формы вы должны установить id:

<form id="form2" action="excel.php" method="post">

И вы должны добавить следующий script:

$("#form2").submit( function(eventObj){
$(this).append('<input type="hidden" name="from" value="'+$("#from").val()+'" /> ');  
$(this).append('<input type="hidden" name="to" value="'+$("#to").val()+'" /> ');               
return true;
});

Ответ 3

Это происходит потому, что у вас есть одна форма с action = "foo.php". Не имеет значения, какая кнопка вы нажмете, она всегда отправит данные в действие формы в этом случае "foo.php".
Решение:
Отделите входы на две формы и установите действие второй формы на "excel.php". Тогда это должно сработать. Надеюсь, это помогло вам.

Изменить: увидел вторую форму за последнюю секунду. В этом случае вам просто нужно взять ввод "от" или "от" до второй формы.