2015-11-17 25 views
1

我有一个物化多个选择元素。但我似乎无法找到一种方法来检索选定的值。有人知道如何检索选定的值吗?物化多个选择

这里的样子,当你选择它: Multiple Select active

当您关闭它,它继承人的外观: Multiple Select inactive

但问题是关闭时如何检索选择里面的值。

编辑:我使用Materialise的CSS(http://materializecss.com

+0

您正在使用哪个css框架?有几个,他们都有不同的工作。 – Thermatix

+0

实现CSS – Rockernaap

回答

1

你可以用基本的jQuery得到它;没有什么特别的材料标记。

对于选择这样的:

<select id="mySelect" multiple> 
    <option value="1" selected>Option 1</option> 
    <option value="2" selected>Option 2</option> 
    <option value="2">Option 2</option> 
</select> 

$('#mySelect').val()将返回所选值的数组:["1", "2"]

+0

材质CSS不会更改Select元素中的选项元素。但它具有生成的更改的UL和LI元素。这些元素生成,所以我不能得到他们的ID。所以这是行不通的。 – Rockernaap

+0

你试过了吗?它隐藏了查看中的底层选择,但它确实更新了值。测试0.97.3:> $('#mySelect')。val()返回null;然后在UI中选择一些内容;然后> $('#mySelect')。val()返回[“1”] – kielni

+0

我确实尝试过。但它没有奏效。但它似乎我的代码有一些缺陷,所以我改变了它,现在你的代码确实工作。谢谢。 – Rockernaap

0

试试吧(获得更多的选择标记)

var datas = {};// object name=> value 
$("form").find("select.initialized").each(function() { 
    var value_input_select = $(this).parents(".select-wrapper").find("input.select-dropdown").val() 
    value_input_select = value_input_select.replace(/&nbsp;/gi,"").replace(/ /gi,"") 
    var value_input_select_array = value_input_select.split(",") 
    var value_string = "" 
    $(this).find("option").each(function(){ 
     if(value_input_select_array.indexOf($(this).text().replace(/&nbsp;/gi,"").replace(/ /gi,"")) >= 0){ 
     value_string += $(this).attr("value")+"," 
     } 
    }) 
    if(value_string != ""){ 
     value_string = value_string.substring(0, value_string.length-1) 
    } 
    datas[this.name] = value_string; 
    }); 
+1

请解释你的答案。尝试它并不能帮助人们学习 –

0

请尝试这样:在这里你会找到一个合适的方式来检索和删除多重选择中的值。实际上,实际上使用UL和LI来取消选择。这就是它造成错误的原因。

$(document).ready(function() { 
$('select').material_select(); 
$('select').change(function(){ 
    var newValuesArr = [], 
     select = $(this), 
     ul = select.prev(); 
    ul.children('li').toArray().forEach(function (li, i) { 
     if ($(li).hasClass('active')) { 
      newValuesArr.push(select.children('option').toArray()[i].value); 
     } 
    }); 
    select.val(newValuesArr); 

    console.log($(this).val()); 
}); 

});

http://jsfiddle.net/9bL25jw9/59/