1

我正在尝试使用 JavaScript 从选择标记中更改值。假设我有这个文本框,如果该文本框为空,则不会进行任何更改,并且选择标签选项的值将保持不变。但是,如果该文本框已填充,那么除了选择标记选项中的值之外,我还必须分配一个不同的值。

这是我正在尝试做的事情:

HTML:

<input type="text" id="txtTest" />
<select name="rdoSelect" id="rdoSelect">
  <option value="option1">Option 1</option>
  <option value="option2">Option 2</option>
</select>

JavaScript:

if (document.getElementById('txtTest').value===null)
{
    document.getElementById('rdoSelect').value;
}
else
{
    document.getElementById('rdoSelect').value = "option 3";
}

我不能让它工作。我尝试将它指向一个元素/变量而不是一个值,但它仍然不起作用:

var test = document.getElementById('rdoSelect');
test.value = "option 3";

我需要帮助,请。谢谢!

4

5 回答 5

2

尝试使用 SelectIndex 方法。请参考以下代码。

我添加了 OnChange 事件来输入文本来测试这个示例。

<html>
<head>
<script language="javascript">

    function test()
    {   
        if (document.getElementById('txtTest').value=='')
        {
            document.getElementById("rdoSelect").selectedIndex = 0;
        }
        else
        {
            document.getElementById("rdoSelect").selectedIndex = 1;
        }
    }

</script>
</head>
<body>
<input type="text" id="txtTest" onchange="test();" />
<select name="rdoSelect" id="rdoSelect">
  <option value="option1">Option 1</option>
  <option value="option2">Option 2</option>
</select>
</body>
</html>
于 2013-08-02T12:27:56.237 回答
0
    if (document.getElementById('txtTest').value===null)
    {
        document.getElementById('rdoSelect').value;
    }
    else
    {
       var val = document.getElementById('txtTest').value
       for(var i, j = 0; i = rdoSelect.options[j]; j++) {
        if(i.value == val) {
            rdoSelect.selectedIndex = j;
            break;
        }
    }

}
于 2013-08-02T12:33:58.763 回答
0

看看这个 jsfiddle,它使用的是 jquery,这可能是最常见的解决方案。希望能帮助到你。

http://jsfiddle.net/GkLsZ/

$(function() {
    $('#btnChange').on('click', function() {
        var value = $.trim($('#txtTest').val());

        if (!!value) {
            $('#rdoSelect')
                .append($("<option></option>")
                .attr("value", value)
                .attr("selected", "selected")
                .text(value)); 
        }
    });
});
于 2013-08-02T12:34:10.413 回答
0

HTMLSelectElement 不允许您value直接设置。<option>具有特定值的多个或零是可能的,因此这不是简单的 1:1 映射。

要选择一个选项,您可以将其selected属性设置为true,或将selectedIndex选择的属性设置为选项编号。

您的选择中没有option 3- 您是否尝试添加新选项?

例如

function setOrCreateSelectValue(select, value) {
    for (var i= select.options.length; i-->0;) {
        if (select.options[i].value==value) {
            select.selectedIndex= i;
            return;
        }
    }
    select.options[select.options.length]= new Option(value, value, true, true);
}
于 2013-08-02T12:26:19.873 回答
0

这发生在按钮单击或 onkeyup 上吗?无论哪种方式在函数中,您都可以使用以下方法向下拉列表添加值:

dropdownlist.append(
    $("<option selected='selected'></option>").val(sValId).html(sVal)
);

或者你试试这个

var optn = document.createElement("OPTION");
optn.text = "--Select--";
optn.value = "0";
baseCurve.options.add(optn);`
于 2013-08-02T12:24:13.073 回答