0

我想动态修改选择元素的选定索引。有时,选择中的选项会导致其他选择中的选项被禁用。我可以在运行时在更改时很好地禁用选项,但我无法更改选择显示的选项。

例如,如果我有这个选择:

<select>
    <option>Even or Odd?</option>
    <option>Even</option>
    <option>Odd</option>
</select>

<select>
    <option value="">Pick a Number</option>
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
    <option value="4">Four</option
</select>

When "Odd" is selected, the even numbers will be disabled, but if an even number was already selected when the first select was changed to "Odd" then even though the selected index for the second select is now 0, the displayed value is还是原来的值。

我目前尝试过:

selects[i].selectedIndex = 0;
selects[i].value = "Pick a Number";
$(selects[i]).val("Pick a Number");
$(selects[i]).attrs("selectedIndex", 0);

最多会发生的是所选索引将发生变化,或者元素的值将变为空字符串,而不会实际更改页面上显示的内容。

4

1 回答 1

3

尝试使用它进行设置,除非您创建了一个,否则prop没有命名的内置函数。attrs

$(selects[i]).prop("selectedIndex", 0);

如果val您为您的选择选项定义了值,您也应该工作。(对于您没有的第一个),对于第二个只需使用.val(""). Pick a Number不是选项的值(而是“”)它是显示的文本,但是即使某些浏览器允许您将其指定为值(如果未指定值),我认为这不适用于跨浏览器。因此,请始终value为您的选项设置属性。

此外,你正在做的事情你可以做:

selects[i].value = "Even or Odd?"; //for your first one
selects[i].value = ""; //for your second one
selects[i].value = "Pick a Number"; //Wont work for second one because you are overriding with an empty value attribute.
于 2013-09-25T19:31:54.980 回答