繁体   English   中英

在选择多个 Jquery 中获取禁用选项的值

[英]Get Value of Disabled Option in Select Multiple Jquery

我的页面上有多个选择,并且我禁用了一个选项,因此用户无法取消选择它们,但我无法弄清楚如何获取禁用选项的值。

到目前为止我的代码

// 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 上找到了这篇文章,其中说

.val() 中长期存在的逻辑确保我们不会在 select-multiple 中返回禁用的选项。 为了保持一致性,更改现在只对 select-one 应用相同的行为。 如果需要,您可以通过 $("select").prop("selectedIndex") 获取禁用的选项值。

但这对我不起作用。

演示

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

您可以通过执行以下操作来获取禁用元素的值:

$('option[disabled]').val();
//==================================
// 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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM