0

こんにちは (2014 年もどうぞよろしくお願いいたします)。

今私のために働いているもの:

1つの選択ボックスで1つのアイテムを選択し、結果を新しいタブに表示します(チェックボックスがチェックされている場合)...動作します。

1つ(4つのうち)の選択ボックスで1つのアイテムを選択します(すべての選択ボックスは同じ名前です!)、結果は新しいタブに表示されません....最初の選択ボックスでアイテムを選択した場合のみ新しいタブに表示されます。

HTML コード:

<select name="selection">
<option value="url1">item 1</option>
<option value="url2">item 2</option>
<option value="url3">item 3</option>
</select>

<select name="selection">
<option value="url4">item 4</option>
<option value="url5">item 5</option>
<option value="url6">item 6</option>
</select>

<select name="selection">
<option value="url7">item 7</option>
<option value="url8">item 8</option>
<option value="url9">item 9</option>
</select>

<select name="selection">
<option value="url10">item 10</option>
<option value="url11">item 11</option>
<option value="url12">item 12</option>
</select>

1 つのチェックボックス (チェックすると、選択した項目が新しいタブで開きます):

<input type="checkbox" id="newtab" name="newtab" />

Jクエリコード:

    $('#selection').on('change', function () {

    top.iframe.location.href = $('#selection').val();

    $('#newtab').click(function() {
        if($('#newtab').is(':checked')){
            window.open($('#selection').val(), '_blank');
        }
    });

});

最初の行はデフォルトとして設定されています....チェックボックスが最初に設定されていない場合、選択されたアイテムは引き続きiframeに表示されます(「iframe」という名前で):

top.iframe.location.href = $('#selection').val();

私の質問:

  • チェックボックスがチェックされている場合、選択されたアイテム(選択ボックスが1つだけの場合)は新しいタブで開きますが、iframeでも更新されます(どうすれば解決できますか!!??)

  • 同じ名前の複数の選択ボックスがある場合、選択ボックスに「selection[]」という名前を付ける必要があることを他の投稿で見ましたが、これを機能させることはできません.......

  • おそらく私のコーディングによる副作用として、Chrome では選択した項目が新しいタブに表示されることがありますが (2 回表示されることもあります)、新しいウィンドウに表示されることがよくあります。Safari または Firefox では、選択したアイテムを表示する新しいタブのみが開きます。

4

2 に答える 2

1

以下のように変更します。

 $('#selection').on('change', function () {

    top.iframe.location.href = $(this).val();

    $('#newtab').click(function() {
        if($('#newtab').is(':checked')){
            window.open($(this).val(), '_blank');
        }
    });

});

$('#selection').val() は最初のものしか取得しないためです。これは、変更されたドロップダウンのみを指すために使用する必要があります。

于 2014-01-01T11:20:02.807 に答える
0

選択を変更するたびにクリックハンドラーを登録するのはなぜですか? チェックされていると変更をチェックインできませんか?

すべての選択を名前で選択するattribute equality selectorには、ID ではなく を使用します。change イベント関数内では、 を使用して現在の要素を参照できますthis

コード (デモのためだけにアラートを使用しました):

 $('select[name="selection"]').on('change', function () {

     if ($('#newtab').is(':checked')) {
         window.open($('#selection').val(), '_blank');
     } else {
         alert($(this).val())
     }

 });

デモ: http://jsfiddle.net/IrvinDominin/DPMSe/

于 2014-01-01T12:02:07.947 に答える