使用JS查找只有一个选项的select(下拉列表),然后默认选择一个选项

时间:2015-06-29 11:28:26

标签: javascript jquery html knockout.js


在我的SPA网站中,我动态地向页面添加了几个选择(下拉列表\组合框)标签。 我需要做的是检查哪一个只有一个选项(空字符串作为选项标题不计数),默认选择它们。 我还使用Knockout绑定,并且需要将所选值正确绑定到相关变量。 例如,如果这些是选择标记:

<div>
  <select for="required" data-bind="options: list1, value: val1, optionsCaption: ''">
    <option value=""></option>
    <option value="1">One</option>
  </select>
</div>
<div>
  <select for="required" data-bind="options: list2, value: val2, optionsCaption: ''">
    <option value=""></option>
    <option value="1">One</option>
    <option value="2">Two</option>
  </select>
</div>

代码应自动选择第一个选择中的唯一选项 我尝试使用此代码:

var chooseDefaultValues = function() {
            var relevantComboBoxes = $("select[for='requiredComboBox']");
            for (var i = 0; i < relevantComboBoxes.length; i++) {
                var currentComboBox = relevantComboBoxes[i];
                if (currentComboBox.disabled) continue; //Skip disabled combo-boxes
                if (currentComboBox.length === 1) { //If there is only one child, select it
                    currentComboBox.selectedIndex = 0;
                }
                if (currentComboBox.length === 2) { //If there are twon childern:
                    if ($(currentComboBox.firsChild).text().trim() === "") { //If the first one is the empty option caption pick the second child
                        currentComboBox.selectedIndex = 1; //As it is the only choice there is
                }
            }
        }

问题是它在选择框中显示正确的值,但它不会填充绑定的变量。 我也试图替换这一行:

currentComboBox.selectedIndex = 0

通过

currentComboBox[0].click()

但它没有帮助......

你的帮助会很有意义:)

0 个答案:

没有答案