Получить / поймать значение кнопки перед отправкой формы, для подтверждения формы
Я просто хочу попросить пользователя подтвердить свой выбор перед отправкой формы. Поэтому мне нужно текстовое значение (под этим я подразумеваю innerHTML, а не атрибут value=""), которое они только что выбрали / щелкнули для подтверждения. Форма состоит из множества кнопок с одинаковыми именами, но с разными значениями (динамически генерируемых), поэтому мне нужно "поймать" их, как только они были выбраны. HTML выглядит так:
<form id="myForm" method="post" action="here.php">
<button class="bc" value="v1">foo</button>
<button class="bc" value="v2">bar</button>
</form>
Пока у меня есть этот кусок кода, но я не могу понять, как получить значение, чтобы добавить его в поле подтверждения.
$('form#valueSelect').submit(function( event ) {
var sel = this;
var c = confirm("You have selected " + sel + " Click OK to continue?");
return c;
});
Я получаю [объект HTMLFormElement] вместо значения. Я устал var sel = this.value;
и value() и val и val(), но это не работает, я не знаю почему.
2 ответа
Попробуйте иметь глобальную переменную, а затем обновить ее при нажатии кнопки. Тогда у вас будет недавнее нажатие кнопки.
var btnText = '';
$(document).ready(function(){
$('form#valueSelect').submit(function( event ) {
var c = confirm("You have selected " + btnText + " Click OK to continue?");
return c;
});
$("input[name='YourBtnName']").on("click",function(){
btnText = $(this).val();
});
});
Извините, мой вопрос не совсем понятен.
Я хотел, чтобы отображаемое значение (innerHTML) кнопки, которую пользователь нажал (из многих других кнопок), html выглядит так:
<form id="myForm" method="post" action="here.php">
<button class="bc" value="v1">foo</button>
<button class="bc" value="v2">bar</button>
</form>
Я нашел обходной путь, используя щелчок вместо отправки:
$('button.bc').click(function( event ) {
var myForm = $('#myForm');
event.preventDefault();
var bval = this.value;
var choice = this.innerHTML;
var c = confirm("You have selected " + choice + "\nClick OK to continue?");
if(c == true) {
var input = $("<input>").attr("type", "hidden").attr("name", "token").val(bval);
$('#myForm').append($(input));
$('#myForm').submit();
}
});
и добавление <input type="hidden" name="token"></input>
в моей форме, чтобы "сохранить" значение нажатой кнопки.