У меня есть форма с двумя кнопки отправки, Rails бэкенд рассчитывает получить один из названия кнопок (action1
или action2
) в params
хэш. Я хочу показать "ты уверен?" сообщение на одной из кнопок. У меня есть этот код:
<form action="/models" id="myform" method="post">
<input name="action1" id="action1Button" type="submit" value="Make Action 1">
<input name="action2" type="submit" value="Make Action 2">
</form>
$('#action1Button').click(function() {
$('#popup').modal('show');
// cancel a submit
return false;
});
$('#popupSubmitButton').click(function() {
$('#myform').submit(); // I want this to trigger action1
});
$('#popupCancelButton').click(function(){
$('#popup).modal('hide');
});
Проблема заключается в том, что при отправке формы в запросе нет имени отправленной кнопки. Есть ли способ отправить форму, как если бы нажала кнопка "Отправить"?
Запустите событие с помощью trigger()
, а в обработчике событий вы можете проверить, было ли событие инициировано или нет, проверив event.isTrigger
$('#action1Button').on('click', function(e) {
if (!e.isTrigger) {
$('#popup').modal('show');
return false;
}
});
$('#popupSubmitButton').on('click', function() {
$('#action1Button').trigger('click');
});
$('#popupCancelButton').on('click', function () {
$('#popup').modal('hide ');
});
$('#myform').submit(); // this should trigger action1
что неверно. это просто отправить форму без каких-либо действий. вместо этого вы захотите вызвать событие click на кнопке action 1 таким образом, чтобы обойти исходный обработчик события, который вы указали.$('#action1Button').trigger('click')