【问题标题】:JQuery select all values in a dropdown with checkbox not workingJQuery选择下拉列表中的所有值,复选框不起作用
【发布时间】:2015-10-16 02:28:14
【问题描述】:

我使用 Flask 作为我的应用程序的框架。我有两个带有复选框的下拉菜单,其 id 为“nodes-select”,它将填充从数据库中获取的值。第二个列表具有静态名称。在页面加载时,我必须选择两个列表中的所有复选框。第一个下拉(节点选择)工作正常。但是第二个下拉菜单没有选择任何复选框。我试过这段代码。纠正我哪里错了?

HTML

<body onload = onLoading()>
    <select id="nodes-select" multiple="multiple">
    </select>
    <select id="filter-select" multiple="multiple" >
    </select>
</body>

Javascript

<script type="text/javascript">
$('#nodes-select').change(function(){
    console.log("Atleast nodes...");
    if($("#nodes-select option[value='-1']").is(':selected'))
    {
        console.log("node...");
        $('#nodes-select option').prop('selected', true);
        $("#nodes-select option[value='-1']").prop('selected', false);
    }
    $('#nodes-select').multiselect('refresh');
});

$('#filter-select').change(function(){
    console.log("Atleast filter...");
    if($("#filter-select option[value='-1']").is(':selected'))
    {
        console.log("filter ...");
        $('#filter-select option').prop('selected', true);
        $("#filter-select option[value='-1']").prop('selected', false);
    }
    $('#filter-select').multiselect('refresh');
});

function onLoading()
{
    alert("Page Loaded");
    $.get("/nodes",function(data,status)
          {
        var tmp = data.output; 
        console.log("**"+tmp);
        $('#nodes-select').append($('<option>', {
            value: -1,
            text : "All"
        }));  
        for(var i =0;i<tmp.length;i++)
        {
            console.log(tmp[i]);
            $('#nodes-select').append($('<option>', {
                value: i,
                text : tmp[i]
            }));
        }
        $('#nodes-select').multiselect('rebuild');
        $('#nodes-select option').prop('selected', true);
        $("#nodes-select option[value='-1']").prop('selected', false);
        $('#nodes-select').multiselect('refresh');

        $('#filter-select').append($('<option>', {
            value: -1,
            text : "All"
        })); 
        console.log("&&") ;                       
        var temp = ["MAC","SUBLBL","VRF","IFHNDL","COMP_ID","V4_ADDR","V6_ADDR"];
        for(var i =0;i<temp.length;i++)
        {
            console.log(temp[i]);
            $('#filter-select').append($('<option>', {
                value: i,
                text : temp[i]
            }));
        }
        $('#filter-select').multiselect('rebuild');
        $('#filter-select').prop('selected', true);
        $("#filter-select option[value='-1']").prop('selected', false);
        $('#filter-select').multiselect('refresh');
    });
}            

</script>

【问题讨论】:

    标签: javascript jquery ajax twitter-bootstrap flask


    【解决方案1】:

    您似乎忘记查询#filter-select 的实际选项。

    改变这一行:

    $('#filter-select').prop('selected', true);
    

    到:

    $('#filter-select option').prop('selected', true);
    

    【讨论】:

    • 复制+粘贴的副作用... :D 非常感谢老兄:)
    • 太棒了。你可以检查复选标记,这样我就可以给你正确的答案。
    猜你喜欢
    • 2018-09-15
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2013-09-30
    • 1970-01-01
    • 2013-07-26
    相关资源
    最近更新 更多