Отключите второй вариант выбора, который меньше первого варианта выбора - PullRequest
0 голосов
/ 11 апреля 2020

Если я выберу, например: «5» из первого селектора, я хочу отключить первые пять опций из второго селектора. Выберите дни от 5 до минимума 6.

<select class="form-control" name="days[]">    
    <option value=1>1</option>                                                             
    <option value=2>2</option>                                                             
    <option value=3>3</option>                                                             
    <option value=4>4</option>                                                             
    <option value=5>5</option>                                                             
    <option value=6>6</option>                                                             
    <option value=7>7</option>                                                             
    <option value=8>8</option>                                                             
    <option value=9>9</option>                                                             
    <option value=1>10</option>                                                            
    <option value=1>11</option>                                                            
    <option value=1>12</option>
<select> 

<select class="form-control" name="days[]">    
    <option value=1>1</option>                                                             
    <option value=2>2</option>                                                             
    <option value=3>3</option>                                                             
    <option value=4>4</option>                                                             
    <option value=5>5</option>                                                             
    <option value=6>6</option>                                                             
    <option value=7>7</option>                                                             
    <option value=8>8</option>                                                             
    <option value=9>9</option>                                                             
    <option value=1>10</option>                                                            
    <option value=1>11</option>                                                            
    <option value=1>12</option>
<select> 

1 Ответ

2 голосов
/ 11 апреля 2020

Вы можете сделать это, используя методы prevAll() и addBack() с изменением обработчик событий .

// get dropdowns
const $drop = $('[name="days[]"]');

// attach change event handler 
$drop.eq(0).change(function() {
  // enable all the options
  $drop.eq(1).find('option').prop('disabled', false);

  // get the corresponding option and all its previous options and then disable them
  $drop.eq(1).find(`option[value="${this.value}"]`).prevAll().addBack().prop('disabled', true);
}).change()
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="form-control" name="days[]">
  <option value=1>1</option>
  <option value=2>2</option>
  <option value=3>3</option>
  <option value=4>4</option>
  <option value=5>5</option>
  <option value=6>6</option>
  <option value=7>7</option>
  <option value=8>8</option>
  <option value=9>9</option>
  <option value=1>10</option>
  <option value=1>11</option>
  <option value=1>12</option>
</select>

<select class="form-control" name="days[]">
  <option value=1>1</option>
  <option value=2>2</option>
  <option value=3>3</option>
  <option value=4>4</option>
  <option value=5>5</option>
  <option value=6>6</option>
  <option value=7>7</option>
  <option value=8>8</option>
  <option value=9>9</option>
  <option value=1>10</option>
  <option value=1>11</option>
  <option value=1>12</option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...