Как я могу получить кнопку, которая вызвала отправление от формы, отправляют событие?

Я пытаюсь найти значение кнопки отправки, которая инициировала форму для представления

$("form").submit(function() {

});

Я мог возможно стрелять, $ ("вводит [type=submit]"), .click () событие для каждой кнопки, и установите некоторую переменную, но это кажется менее изящным, чем некоторые, как, осуществляя кнопку форма на отправляет.

102
задан hunter 14 January 2010 в 17:34
поделиться

5 ответов

Я реализовал это и полагаю, что это будет делать.

$(document).ready(function() {
    $("form").submit(function() { 

    var val = $("input[type=submit][clicked=true]").val()

    // DO WORK

});

И это событие кнопки «Отправить», которое устанавливает его

$("form input[type=submit]").click(function() {
    $("input[type=submit]", $(this).parents("form")).removeAttr("clicked");
    $(this).attr("clicked", "true");
});

, спасибо за ответы, но это не ужасно несуществует ...

34
ответ дан 24 November 2019 в 04:32
поделиться

jQuery, похоже, не предоставляет эти данные о событии «Отправить». Похоже, этот метод, который вы предложили, это ваша лучшая ставка.

0
ответ дан 24 November 2019 в 04:32
поделиться

Я создал тестовую форму и с помощью Firebug нашел этот способ получения значения;

$('form').submit(function(event){
  alert(event.originalEvent.explicitOriginalTarget.value);
}); 

К сожалению, только Firefox поддерживает это событие.

9
ответ дан 24 November 2019 в 04:32
поделиться

Вы можете попробовать так с помощью «Event.originalEvent.x» и «Event.originalEvent.y»:

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
    <title>test</title>
</head>
<body>

    <form id="is_a_form">
        <input id="is_a_input_1" type="submit"><br />
        <input id="is_a_input_2" type="submit"><br />
        <input id="is_a_input_3" type="submit"><br />
        <input id="is_a_input_4" type="submit"><br />
        <input id="is_a_input_5" type="submit"><br />
    </form>

</body>
</html>
<script>
$(function(){

    $.fn.extend({
      inPosition: function(x, y) {

        return this.each(function() {

            try{
                var offset = $(this).offset();

                if ( (x >= offset.left) &&
                     (x <= (offset.left+$(this).width())) &&
                     (y >= offset.top) &&
                     (y <= (offset.top+$(this).height())) )
                {
                    $(this).css("background-color", "red");
                }
                else
                {
                        $(this).css("background-color", "#d4d0c8");
                }
                }
                catch(ex)
                {
                }

        });
      }
    }); 

    $("form").submit(function(ev) {

        $("input[type='submit']").inPosition(ev.originalEvent.x ,ev.originalEvent.y);
        return false;

    });

});
</script>
1
ответ дан 24 November 2019 в 04:32
поделиться

Согласно по этой ссылке, объект Event содержит поле Event.target, которое:

Возвращает строку, представляющую объект, инициировавший событие.

Я только что создал страницу, проверяющую, что это за значение, и кажется, что это представление для самой формы, а не для нажатой кнопки. Другими словами, Javascript не предоставляет возможности определения нажатой кнопки.

Что касается решения Дэйва Андерсона , было бы неплохо проверить это в нескольких браузерах, прежде чем использовать его. Возможно, это может сработать хорошо, но я не могу сказать в любом случае.

4
ответ дан 24 November 2019 в 04:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: