1

私の質問は少しわかりにくいかもしれませんが、これを読んだ後、もう少し明確になることを願っています.

html

<form id="form">
selected: <input type="text" name="opt" id="opt">
<ul id="list">
<li>car</li>
<li>bus</li>
<li>bike</li>
</ul>
<input type="submit" name="submit" value="submit">
</form>

JavaScript

$('#list li').click(function(){
    var id= $(this).text();
    $('#form').submit(function(){
        alert(id);
    });
});

リスト項目をクリックしてから、送信をクリックする前に別のリスト項目をクリックすると、次々とアラートが表示されます。たとえば、車の次に自転車をクリックすると、自転車のアラートが表示され、点滅してから車のアラートが表示されます。目的は、最後のクリック、つまり選択されたオプションのクリックのみを警告することです。クリックごとにアラートを出すのではなく、バイクにアラートを出すようにしたいのです。

4

5 に答える 5

1

これを試してください:動作デモ http://jsfiddle.net/RFgYk/1/ または http://jsfiddle.net/RFgYk/

コード

$('#list li').click(function() {
    id = $(this).text();

});

$('#form').submit(function() {
    alert(id);
});​
于 2012-07-26T00:39:09.000 に答える
0

クリックするたびにフォームが送信されます。あなたのコードに従って。したがって、クリックするたびにアラートも実行されます。実際のタグを使ってみませんか?あなたが何をしたいのか知りたい。また、フォーム送信をクリック機能から分割し、リスト値をグローバル変数に格納することもできます

于 2012-07-26T00:41:17.913 に答える
0

クリックするたびに送信ハンドラーを追加しているliため、クリックするたびに、作成された送信ハンドラーからそれぞれのアラートが表示liされます。送信ハンドラーは、クリックハンドラーの外側に一度設定する必要があります。

クリックハンドラーで最後にクリックされたアイテムの値を設定し、送信ハンドラーで取得できます。

$('#list li').click(function() {
    $('#form'.data('last', $(this).text());

});

$('#form').submit(function() {
    alert($('#form'.data('last');
});​

フィドル

于 2012-07-26T00:45:46.790 に答える
0

クラスを使用する代替アプローチ。また、「selected」というラベルの付いたテキストボックスには、選択したアイテムの値が表示されると想定しています。この場合、アラートでその最終値を使用できます。

$('#list li').click(function(){
    $('#opt').val($(this).text());
    $(this).addClass('selected');
    $('#list li').not(this).removeClass('selected');
});

$('#form').submit(function(){
    //To use selected item do: $('#list li.selected')

    alert( $('#opt').val() );
});
于 2012-07-26T00:55:09.450 に答える
0

これを試して:

$('#form').submit(function(){
    id = $('#list li.selected').text();
    alert(id);
});

ここでは、最後の 1 つだけにアラートを出します。

于 2012-07-26T00:40:03.117 に答える