Jquery срабатывает только один раз в зависимых выпадающих списках - PullRequest
1 голос
/ 29 февраля 2020

Существует три раскрывающихся списка, и два из них зависят от первого появившегося выбора. Как только я выбираю значение в первом раскрывающемся списке, который называется «категория», другие два раскрывающихся списка становятся активными, однако, если я снова выбираю пустое значение в категории, остальные два раскрывающихся списка остаются включенными.

<script>
        $(document).ready(function() {
            $("select").on("change", function() {
                if  ($("select[name='category']").val() == "") { 
                    $("select[name='subcategory']").attr("disabled");
                    $("select[name='name']").attr("disabled");
                } else {
                    $("select[name='subcategory']").removeAttr("disabled");
                    $("select[name='ename']").removeAttr("disabled");
                }
            });
        });
    </script>

1 Ответ

2 голосов
/ 29 февраля 2020

Атрибуты и свойства

По состоянию на jQuery 1,6 , .prop() метод предоставляет способ явного получения значений свойств, в то время как .attr() извлекает атрибуты.

Вы можете попробовать использовать .prop():

.prop('disabled', 'disabled');

Демо: (согласно обсуждению в комментарии)

$(document).ready(function() {
  $("select[name=category]").on("change", function() {
    if($(this).val() == "") { 
      $("select[name=subcategory]").prop('disabled', 'disabled');
      $("select[name=ename]").prop('disabled', 'disabled');    
    } else {
      $("select[name=subcategory]").removeAttr("disabled");
      if($("select[name=subcategory]").val() == "") { 
        $("select[name=ename]").prop('disabled', 'disabled');
      } else {
        $("select[name=ename]").removeAttr("disabled");
      }
    }
    
  }).trigger('change');
  $("select[name=subcategory]").on("change", function() {
    if($(this).val() == "") { 
      $("select[name=ename]").prop('disabled', 'disabled');
    } else {
      $("select[name=ename]").removeAttr("disabled");
    }
  }).trigger('change');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="category">
  <option value="">Select</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>
<select name="subcategory">
  <option value="">Select</option>
  <option value="a">A</option>
  <option value="b">B</option>
</select>
<select name="ename">
  <option value="">Select</option>
  <option value="1">1</option>
  <option value="2">2</option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...