Получить / поймать значение кнопки перед отправкой формы, для подтверждения формы

Я просто хочу попросить пользователя подтвердить свой выбор перед отправкой формы. Поэтому мне нужно текстовое значение (под этим я подразумеваю 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> в моей форме, чтобы "сохранить" значение нажатой кнопки.

Другие вопросы по тегам