0

ここでやや些細な質問をすることを許していただく必要がありますが、ボタンが押されたかどうかを検出するより良い方法があるかどうか、一般的に知りたいと思っています。これはアンカータグにも当てはまると思います。

現在、2 つの送信ボタンがあり (この場合は使用できません$(form).submit)、どちらもアクティブにすると別のフィールドを変更します。

<button id="accept" type="submit">Accept</button>
<button id="decline" type="submit">Decline</button>

これを達成するために、クリック イベントと Enter キープレス イベントを別々に検出しました。

$('#accept').click(function(){ $('#decision').val('Agree');  })
$("#accept").keyup(function(event){
    if(event.keyCode == 13){
        $('#decision').val('Agree');
    }
});

特に多くの処理がある場合(関数を作成できますが、それはさらに別のステップです)、jQueryにはほとんどのことがカバーされていますが、インターネットをトロールした後、よりクリーンなソリューションが見つからないことに驚いています。

(上記では、スペースを押すなど、ボタンの押下を模倣する他の方法について心配していましたが、それはカバーされているようです!)

ありがとう!

4

4 に答える 4

2

クリックを少し良くするために、次のようなことを行うことができます: (より良いものを得るには、ここで関数を使用する必要があります):

function setDecision(value){
    $('#decision').val(value);
}

$('button[type=submit]').click(function() {
    var val = $(this).text();

    setDecision(val);
});

$("button[type=submit]").keyup(function(event){
    var val = $(this).text();

    if(event.keyCode == 13){
        setDecision(val);
    }
});
于 2012-06-20T14:45:57.357 に答える
2

ボタン要素の場合、スペースバーと Enter キーの両方がボタン上で押されると、W3C イベント仕様に従ってクリック イベントが生成されます。それを処理するために特別な処理を行う必要はありません。

の使用$(form).submit()に関しては、できます。ボタンをプッシュ ボタン (W3C)に変更して、暗黙的にフォームを送信しないようにボタンを変更するだけです。

<button type="button" id="...">...</button>

次に、ハンドラーで次のことができます。

$('#accept,#decline').click(function(event){
    $('#decision').val($(event.target).text());
    $(form).submit();
}

必要に応じて$(event.target).text()、「Decline」を null/emptystring にするために何らかの処理を行うことができます。

于 2012-06-20T14:54:55.137 に答える
1

name="decision"およびvalue="Accept"/ value="Decline"(それに応じて) を送信ボタンに追加します

この方法では、これを処理するために JavaScript はまったく必要ありません...

また、「同意する」ボタンが最初の場合、任意のフォーム フィールド内で Enter キーを押すと、そのボタンもトリガーされます

サンプル:

<form action="1.html" method="get">

<input type="text" name="in">

<button type="submit" name="decision" value="Accept">Accept</button>
<button type="submit" name="decision" value="Decline">Decline</button>

</form>
于 2012-06-20T14:49:31.953 に答える
1

私はあなたの質問を理解していると思います.この関連トピックに優先順位があるかもしれません.

jQuery:フォーム送信時にクリックされたボタンを取得する方法は?

このメソッドは、各ボタンに .click() イベントを追加することを回避しますが、それはアプリケーションにとって実行可能なオプションかもしれません。

お役に立てれば!石工

于 2012-06-20T14:45:43.883 に答える