如何根据输入值自动选择选项

时间:2010-12-04 16:12:09

标签: javascript jquery select input option

我需要在文档就绪时实际选择select的选项,具体取决于输入的值。

示例:

<select id="mySelect">
<option value="1">myVal1</option>
<option value="2">myVal2</option>
</select>

<input type="text" id="myId" value="2">

例如,我们在页面加载时输入的预定义值为“2”。我需要选择框自动选择,其选项具有与输入'myId'相同的值。我的意思是'mayVal1'必须被选中。

当输入没有值时,select必须表现为默认值。

谢谢!

3 个答案:

答案 0 :(得分:5)

你提到的“on document ready”有点暗示你可能正在使用jQuery,假设(虽然可能是错误的),我提供给你:

$(document).ready(
    function(){
        var theValue = $('#myId').val();
        $('option[value=' + theValue + ']')
            .attr('selected',true);
    });

With a demo at JS Fiddle


已编辑以回应OP的问题:

  

如何将选项的值与输入值中的第一个单词进行比较?我的意思是如果我有选项值'hello'并且输入值'hello world'脚本必须在其值中选择包含'hello'的选项。

是的,鉴于您发布的示例与您的问题之间存在差异,我将尝试解决这两种可能性。

首先,根据文字组件选择option(在上面的代码中,'myVal1','myVal2'位):

$(document).ready(
    function() {
        $('form:eq(0)').submit(
            function() {
                var theValue = $('#myId').val().split(" ",1);
                $('option:contains(' + theValue + ')').attr('selected', true);
                return false;
            });
    });

JS Fiddle demo:请注意option元素的文本组件表示option元素的

其次,如果要将输入到myId输入元素中的值的第一部分链接到select / option元素的 (一个或多个):

$(document).ready(
    function() {
        $('form:eq(0)').submit(
            function() {
                var theValue = $('#myId').val().split(" ",1);
                $('option[value=' + theValue + ']').attr('selected', true);
                return false;
            });
    });

JS Fiddle demo

这些演示可以keyup()或等效的操作/事件一起使用,但submit()似乎是更好的选择。

答案 1 :(得分:1)

in vanilla JS:

var listener = function(ev){
var input = document.getElementById('myId');
for(var i = 0, elems = document.getElementById('mySelect'), l = elems.length; i < l; i++)
    elems[i].selected = elems[i].value == input.value;    
}
listener();
document.getElementById('myId').addEventListener('change', listener, false);

使用jQuery:

$(function(){
    $('#myId').change(function(){
       $('#mySelect option').removeAttr('selected').filter('[value=' + $(this).val() + ']').attr('selected', true);
    }).change()
})

答案 2 :(得分:0)

下面的内容应该起作用///

<select>
    <option value="0">One</option>
    <option value="1">Two</option>
</select>

$(document).ready(
    var inputValue = $('#id').val();
    $('select').val('1'); // selects "Two"
    $('select').val(inputValue); // also selects "Two"

});