代码之家  ›  专栏  ›  技术社区  ›  Jay Corbett

使用jQuery,如何将select的选定值存储到数组中?

  •  1
  • Jay Corbett  · 技术社区  · 17 年前

    谢谢你阅读这篇文章。

    我本以为它会像在select.val()上使用.split函数一样简单,但我得到了一个js错误。这是我正在使用的代码。我将使用.each()循环浏览所选项目…但希望了解我做错了什么。。。

    如果我用一个文本设置opts..则拆分有效(注释代码)

    谢谢

    <html><head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
    <script type="text/JavaScript">
    $(function(){
        $("#multOpts").bind("click", function() {
        //  var opts = "OPT1,OPT2,OPT3" ;
            var opts = $("#select1").val() ;
            $("#text1").val(opts);
        });
        $("#oneOpt").bind("click", function() {
            //  var opts = "OPT1,OPT2,OPT3" ;
            var opts = $("#select1").val() ;
            var optsArray = opts.split(",") ;
            $("#text2").val("1st opt: " + optsArray[0]);
        });
    }); // End eventlistener
    </script>
    </head><body>
    <select id="select1" multiple size="5">
    <option value="OPT1">Option 1</option>
    <option value="OPT2">Option 2</option>
    <option value="OPT3">Option 3</option>
    <option value="OPT4">Option 4</option>
    <option value="OPT5">Option 5</option>
    </select>
    <div>
    <input id="multOpts" type="button" value="Show Options"/>
    <input id="text1" type="text"/>
    </div>
    <input id="oneOpt" type="button" value="One Option"/>
    <input id="text2"  type="text"/>
    </body></html>
    
    2 回复  |  直到 17 年前
        1
  •  6
  •   Christian C. Salvadó    17 年前

    当选择了多个选项时,val()函数将返回一个数组,不需要进行拆分。

        $("#oneOpt").bind("click", function() {
                var opts = $("#select1").val();
                $("#text2").val("1st opt: " + opts[0]);
        });
    
        2
  •  1
  •   GiDo    17 年前

    由于jQuery 1.2,.val()返回的值数组是在多次选择时返回的。

    var opts = $("#select1").val() || [];
    $("#text2").val("values is: " +opts.join(", "));