使用javascript选择所有多选选项

时间:2014-06-18 13:57:44

标签: javascript php html

我尝试使用javascript选择多选flower[ ]的所有选项,但是当我点击提交时没有发生任何事情,请说明错了什么?

<html>
    <head>
        <script language="javascript" type="text/javascript">
            $("#submit").click(function() {

                $('#flower option').each(function() {
                    $(this).attr('selected', true);
                });

            });
        </script>
    </head>

    <body>
        <form method="Get" action="#">
            <select name="flower[ ]" id="flower" multiple>
                <option value="flower">FLOWER</option>
                <option value="rose">ROSE</option>
                <option value="lilly">LILLY</option>
                <option value="jasmine">JASMINE</option>
                <option value="lotus">LOTUS</option>
                <option value="tulips">TULIPS</option>
            </select>
            <input type="submit" id="submit" name="submit" value="submit">
        </form>
    </body>

</html>

5 个答案:

答案 0 :(得分:2)

您必须将您的javascript点击功能放在文档就绪功能中。喜欢这个

 $(document).ready(function(){
   $("#submit").click(function(e){
      $('#flower option').each(function () {
         $(this).attr('selected', true);
      });
   });
 });

干杯...... :)

答案 1 :(得分:2)

你错过了:

$(document).ready(function(){

在您的脚本上方,然后使用以下命令关闭它:

});

但如上所述:

$('#flower option').attr('selected', true);

也应该做的伎俩

答案 2 :(得分:1)

$('#flower option').attr('selected', true);

您已经选择了所有选项,因此不需要每个循环。

答案 3 :(得分:1)

您没有在问题中指定,但看起来您正在使用jQuery。如果这样做,请首先确保已将代码放在$(document).ready(function(){...})块内,以便等待DOM准备好开始附加事件侦听器。此外,您不应该.each(function(){...})来电。最后,为确保跨浏览器兼容性并符合标准,请将selected属性设置为'selected'而不是true。请参阅下面的代码。

$(document).ready(function() {
  $('#submit').click(function() {
    $('#flower option').attr('selected', 'selected');
  });
});



修改 实际上,最好在这里使用jQuery的.prop(),因为只使用.attr()来设置选项的初始状态。所以......

$(document).ready(function() {
  $('#submit').click(function() {
    $('#flower option').prop('selected', true);
  });
});


有关这方面的更多信息可以在这个问题中找到...
Jquery select all values in a multiselect dropdown

答案 4 :(得分:1)

将你的javascript放在正文的末尾或使用$(document).ready()。必须在表单已经呈现时执行。

你可以用.val()来做。 $(&#39;#flower&#39;)。val(价值阵列),即

 $('#flower').val(['lilly', 'lotus']);

选择所有可以使用的

$('#flower').val($('#flower option').map(function(){
    return $(this).attr('value');
}));