Отправлять те же самые входы для разных действий с одной формой
У меня есть два поля ввода и Я хочу опубликовать те же данные в двух разных 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". Тогда это должно сработать. Надеюсь, это помогло вам.
Изменить: увидел вторую форму за последнюю секунду. В этом случае вам просто нужно взять ввод "от" или "от" до второй формы.