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>

一个复选框(选中时,所选项目应在新选项卡中打开):

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

查询代码:

    $('#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();

我的问题:

  • 如果选中复选框,则所选项目(如果只有一个选择框)将在新选项卡中打开,但也会在 iframe 中刷新(我该如何解决!!??)

  • 我在其他帖子中看到,如果有多个同名的选择框,我应该给选择框命名为“selection []”,但我无法让它工作......

  • 可能是由于我的编码造成的一个副作用是,在 Chrome 中,有时所选项目会出现在新选项卡中(有时会出现两次),但通常会出现在新窗口中。在 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

为什么要在每次选择更改时注册点击处理程序?如果已检查,您不能检查更改吗?

要按名称选择所有选择,请使用 an attribute equality selector,而不是按 id;在更改事件函数中,您可以使用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 回答