gpt4 book ai didi

javascript - 如果有一个选项,如何禁用选择下拉列表?

转载 作者:行者123 更新时间:2023-11-27 22:58:09 27 4
gpt4 key购买 nike

我想知道如何禁用第三个下拉列表,以防它在过滤后没有任何选项(不包括选择选项占位符选项)。

我想添加一个 if 语句,如 if 和 $select3.length 可以解决这个问题,但不知道如何在我的代码中实现它和过滤,因为我对 javascript 还很陌生。

<select name="select1" id="select1">
<option value="" disabled selected>Select your option</option>
<option value="1" option-id="1">Sitzen </option>
<option value="2" option-id="2">Schlafen</option>
<option value="3" option-id="3">Reisen</option>
</select>

<select name="select2" id="select2" disabled>
<option value="a" disabled selected option-id="a">Select your option</option>
<option value="1" option-id="1">Comfort Cushion</option>
<option value="2" option-id="1">Freilagerungssitzkissen</option>
<option value="3" option-id="1">Rückenkissen</option>
<option value="4" option-id="1">Sitzkissen zum Druckmanagement</option>
<option value="5" option-id="1">Wedge Cushion</option>
<option value="6" option-id="1">Wedge Pillow</option>
<option value="7" option-id="2">Comfort Pillow</option>
<option value="8" option-id="2">Dreamy Cushion</option>
<option value="9" option-id="2">Kniekissen</option>
<option value="10" option-id="3">Reise Nackenkissen</option>
</select>

<select name="select3" id="select3" disabled>
<option value="a" disabled selected option-id="a">Select your option</option>

<option value="2" option-id="2" >Standard</option>
<option value="3" option-id="2" >Large</option>

<option value="1" option-id="3" >Small</option>
<option value="2" option-id="3" >Standard</option>

<option value="2" option-id="4" >Standard</option>
<option value="3" option-id="4" >Large</option>


</select>
var $select1 = $( '#select1' ),
$select2 = $( '#select2' ),
$select3 = $( '#select3' ), // I added that line but not sure if its correct

$options_a = $select2.find( 'option' ),
$options_b = $select3.find( 'option' ); // I added that line but not sure if its correct

$select1.on( 'change', function() {
$select2.prop("disabled", false);

$select2.html( $options_a.filter(function () {
return $(this).attr('option-id') === $select1.val() ||
$(this).attr('option-id') === "a"
}))

$select2.val('a')
$select3.val('a')
} )

// I added the next lines for select3 but not sure if they are correct
$select2.on( 'change', function() {
$select3.prop("disabled", false);
$select3.html( $options_b.filter(function () {
return $(this).attr('option-id') === $select2.val() ||
$(this).attr('option-id') === "a"
}));

$select3.val('a')

} )

https://jsfiddle.net/arabtornado/bkm25otw/46/

最佳答案

为此,您可以根据 $select3 中的 option 元素数量设置 disabled 属性。为此,您可以在 $select2change 事件处理程序中添加以下行:

$select3.prop('disabled', $select3.find('option').length == 1);

请注意,当只有 1 元素时它会被禁用,因为您始终具有默认的“选择您的选项”。

另外值得注意的是 option-id 是一个非标准属性,这意味着您的 HTML 无效。我建议使用 data 属性来保持有效性。

var $select1 = $('#select1'),
$select2 = $('#select2'),
$select3 = $('#select3'),
$options_a = $select2.find('option'),
$options_b = $select3.find('option');

$select1.on('change', function() {
$select2.prop("disabled", false).html($options_a.filter(function() {
return $(this).data('option-id') === parseInt($select1.val(), 10) || $(this).data('option-id') === "a"
})).val('a')
$select3.val('a')
})

$select2.on('change', function() {
$select3.html($options_b.filter(function() {
return $(this).data('option-id') === parseInt($select2.val(), 10) || $(this).data('option-id') === "a"
}));
$select3.prop('disabled', $select3.find('option').length == 1).val('a')
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="select1" id="select1">
<option value="" disabled selected>Select your option</option>
<option value="1" data-option-id="1">Sitzen </option>
<option value="2" data-option-id="2">Schlafen</option>
<option value="3" data-option-id="3">Reisen</option>
</select>

<select name="select2" id="select2" disabled>
<option value="a" disabled selected data-option-id="a">Select your option</option>
<option value="1" data-option-id="1">Comfort Cushion</option>
<option value="2" data-option-id="1">Freilagerungssitzkissen</option>
<option value="3" data-option-id="1">Rückenkissen</option>
<option value="4" data-option-id="1">Sitzkissen zum Druckmanagement</option>
<option value="5" data-option-id="1">Wedge Cushion</option>
<option value="6" data-option-id="1">Wedge Pillow</option>
<option value="7" data-option-id="2">Comfort Pillow</option>
<option value="8" data-option-id="2">Dreamy Cushion</option>
<option value="9" data-option-id="2">Kniekissen</option>
<option value="10" data-option-id="3">Reise Nackenkissen</option>
</select>

<select name="select3" id="select3" disabled>
<option value="a" disabled selected data-option-id="a">Select your option</option>
<option value="2" data-option-id="2">Standard</option>
<option value="3" data-option-id="2">Large</option>
<option value="1" data-option-id="3">Small</option>
<option value="2" data-option-id="3">Standard</option>
<option value="2" data-option-id="4">Standard</option>
<option value="3" data-option-id="4">Large</option>
</select>

关于javascript - 如果有一个选项,如何禁用选择下拉列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54313616/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com