【问题标题】:Disable/delete select option based on another select option data attribute value根据另一个选择选项数据属性值禁用/删除选择选项
【发布时间】:2018-09-10 16:51:16
【问题描述】:

如果#cities 选项值与#cities2 数据属性值匹配,我想显示来自#cities2 的选项。

例如,如果在第一个选择中选择 Miami,则在第二个选择框中仅显示 Miami 并从#cities2 中删除或禁用所有其他选项。

这是我正在尝试的代码:

<select name="cities" id="cities">
    <option value="Los Angeles">Los Angeles</option>
    <option value="Miami">Miami</option>
    <option value="Las Vegas">Las Vegas</option>
    <option value="Chicago">Chicago</option>
</select>

<select name="cities2" id="cities2">
    <option data-cities="Los Angeles">Los Angeles</option>
    <option data-cities="Miami">Miami</option>
    <option data-cities="Las Vegas">Las Vegas</option>
    <option data-cities="Chicago">Chicago</option>
</select>

<script>
 $('#cities').change(function(e){
    var $option = $('#cities2 option').data('cities');
    if($(this).val() == "Miami" && $option == "Miami" ){
       $("#cities2 option").prop('disabled',true);           
       $("#cities2 option[data-cities='Miami']").prop('disabled',false);

    }else {
       $("#cities2 option").prop('disabled',false);
    };
 });
</script>

提前感谢您的帮助。

【问题讨论】:

  • 您是否收到任何控制台错误?
  • @Shahzad 不,我没有收到任何控制台错误。
  • @TheFool 能否请您给我 jsfiiddle 链接,以便我查看。谢谢

标签: javascript jquery html


【解决方案1】:

试试这个代码:

$('#cities').change(function(e){
    var $option = $('#cities2 option');
    var $selectedValue = $('#cities option:selected').val();

    $.each($option, function(inedx, option){
        var disabled = $selectedValue !== $(option).val();
      $(option).prop('disabled', disabled);
    });
 });

这也是小提琴Demo

【讨论】:

    【解决方案2】:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <select name="cities" id="cities">
        <option value="Los Angeles">Los Angeles</option>
        <option value="Miami">Miami</option>
        <option value="Las Vegas">Las Vegas</option>
        <option value="Chicago">Chicago</option>
    </select>
    
    <select name="cities2" id="cities2">
        <option data-cities="Los Angeles">Los Angeles</option>
        <option data-cities="Miami">Miami</option>
        <option data-cities="Las Vegas">Las Vegas</option>
        <option data-cities="Chicago">Chicago</option>
    </select>
    
    <script>
      $('#cities').change(function(e){
        var option = $(this).val();
        console.log("Selected first: " + option);
        
        if ($(this).val() == "Miami" && option == "Miami") {
          console.log("This is Miami");
          $("#cities2 option").prop('disabled',true);           
          $("#cities2 option[data-cities='Miami']").prop('disabled', false);
          $("#cities2 option[data-cities='Miami']").prop('selected',true); 
        } else {
          console.log("Not Miami");
          $("#cities2 option").prop('disabled', false);
        };
      });
    </script>

    您在 javascript 的开头有一个错误。这是有效的解决方案(不是通用的,就像你的例子一样)

    【讨论】:

      猜你喜欢
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-03
      相关资源
      最近更新 更多