我的页面上有一个多项选择,我有一个禁用的选项,以便用户无法取消选择它们,但我无法弄清楚如何获取已禁用选项的值。
到目前为止我的代码
// Get selected positions
var $selPositions = $('select#empPositions').val();
HTML
<select name="empPositions[]" id="empPositions" style="width: 370px;" multiple="" data-placeholder="Choose a Position" required="">
<option></option>
<optgroup label="Admin">
<option disabled="">There are no positions assigned to Admin</option>
</optgroup>
<optgroup label="Information Technology">
<option value="1" selected="" disabled="">IT Developer</option>
<option value="2">IT Geeks</option>
</optgroup>
请注意,禁用选项会根据其他变量进行更改,但它只会为我提供所选的非禁用值。任何人都可以告诉我这是否可以做到以及如何做到?
我正在使用Chosen,因此为disabled
选项
小提琴: http://jsfiddle.net/c5kn5w75/
我确实在JQuery Bug Site上找到了this article
.val()中的长期逻辑确保我们不会在select-multiple中返回禁用的选项。对于一致性,此更改仅对select-one应用相同的行为。如果需要,您可以通过$(“select”)。prop(“selectedIndex”)来获取禁用选项值。
但那对我不起作用。
答案 0 :(得分:11)
var opt = $('#empPositions option:selected').map(function(i,v) {
return this.value;
}).get(); // result is array
alert( opt );
请注意,当您提交表单时,即使选择了禁用选项,也不会提交。如果您通过AJAX提交,则可以获取如上所示的值。
另请注意,$('option[disabled]').val()
将返回第一个已停用的option
元素的值,并$('option[disabled]:selected').val()
返回第一个选定的已禁用选项的值。
如果始终只有一个selected disabled
选项元素,您可以使用以下命令对其进行定位:
var opt = $('#empPositions option[disabled]:selected').val(); // result is string
答案 1 :(得分:0)
您可以通过执行以下操作来获取已禁用元素的值:
$('option[disabled]').val();
答案 2 :(得分:0)
//==================================
// Option-1:
//==================================
// Get Disabled Options
var disabled_options = $('#selectboxID option[disabled]');
// Get Disabled Ids
var disabled_options_ids = disabled_options.map(function(i,v) {
return this.value;
}).get();
//==================================
// Option-2:
//==================================
// Get Disabled options Ids Using SelectBoxID
var disabled_options_ids= $('#selectboxID option[disabled]').map(function(i,v) {
return this.value;
}).get();