0

我有一个表格,用户可以在其中选择时间间隔。但我只希望他们只能选择一个选项。在从下拉列表中选择一个值时,jQuery 应该重置其他下拉列表。HTML(和 php 但不相关):

<select class="span1" name="repeatminute" id="repeatIntervalTiming" onChange="disableOther(this)">
            <?php for($i=0; $i<61;$i++){ echo "<option>$i</option>"; } ?>
            </select>
            minute(s)</label>
              <label>
            <select class="span1" name="repeathour" id="repeatIntervalTiming" onChange="disableOther(this)">
            <?php for($i=0; $i<25;$i++){ echo "<option>$i</option>"; } ?>
            </select>
             hour(s)</label>
            <label>
            <label>
                 <select class="span1" name="repeatday" id="repeatIntervalTiming" onChange="disableOther(this)">
            <?php for($i=0; $i<32;$i++){ echo "<option>$i</option>"; } ?>
            </select>
            day(s)</label>
            <label>
            <select class="span1" name="repeatmonth" id="repeatIntervalTiming" onChange="disableOther(this)">
            <?php for($i=0; $i<13;$i++){ echo "<option>$i</option>"; } ?>
             </select>
             month(s)</label> 

这是我的 jQuery 尝试:

function disableOther(caller){
    $('#repeatIntervalTiming').each(function(index) {
        if ($(this).text() != caller.textContent){
            $(this).val(0);
        }
    });
4

3 回答 3

2

jQuery 中有一种.not()方法可以从匹配的元素集中删除元素。

$('select.span1').change(function() {
    $('select.span1').not($(this)).val('');
});

文档在这里

PS1:使用唯一的 ID!我已将您的 ID 选择器更改为类选择器。

PS2:尽可能避免使用内联 javascript。我的例子是不引人注目的。

于 2012-10-22T10:56:23.497 回答
1

我删除了您的 onchange-function 并在 jQuery 中添加了一个事件:

$('select').change(function () {
  $('select').not($(this)).val('');
});​​

在这里查看一个工作示例:http: //jsfiddle.net/4pqdx/

编辑注意到我有错误的 jsfiddle-link。新的作品!

于 2012-10-22T11:03:26.473 回答
0

首先,您永远不应该在同一个 html 文档中有两个具有相同 id 的元素在所有选择框中添加相同的类并给它们所有不同的 id 一旦您的选择框上的所有 id 都不同,您可以定位除您所在的那个之外的所有有类似的东西:

function disableOther(callerId){
    $('.selectBoxesClass:not('+caqllerId+')').val(0);
});
于 2012-10-22T11:01:40.497 回答