Почему мой jquery работает только последовательно? - PullRequest
1 голос
/ 24 апреля 2020

Работа в проекте с использованием JQuery 1.11. У меня есть несколько строк данных, каждая из которых имеет два поля выбора. Второй в каждой строке должен быть отключен до тех пор, пока для первого не будет указано значение c.

Код, который у меня работает, работает ... но странно, он работает, только если вы делаете их последовательно приказ. Если я go на что-либо, кроме первого, сначала не обновлюсь.

Может кто-нибудь подсказать мне, что я делаю неправильно? Спасибо!

Вот скрипка: https://jsfiddle.net/JCOvergaar/xLdp6wgo/9/

А для потомков вот код:

$(document).on('change', '.ThisFirstThings', function() {

  var dataFlag = $(".ThisFirstThings option:selected").attr('data-flag');
  if (dataFlag == 1) {
    $(this).closest("tr").find(".SecondThing").prop('disabled', false)
  } else {
    $(this).closest("tr").find(".SecondThing").prop('disabled', true)
  }
}).trigger('change');
  <form name="ThisForm" id="ThisForm">
    <div id="divDVT">
      <table>
        <tbody>
          <tr>
            <td>
              <select name="ThisFirstThing_1" id="ThisFirstThing_1" class="ThisFirstThings">
                <option value="106" data-flag="0">No change</option>
                <option value="107" data-flag="0">No change</option>
                <option value="205" data-flag="1">Should Enable -></option>
              </select> </td>
            <td>
              <select name="ThisSecondThing_1" id="ThisSecondThing_1" class="SecondThing" disabled="">
                <option value="43">one thing</option>
                <option value="82">another</option>
              </select> </td>
            <td>
              <input type="Submit" name="ThisSubmit" value="Submit"></td>
          </tr>
          <tr>
            <td>
              <select name="ThisFirstThing_2" id="ThisFirstThing_2" class="ThisFirstThings">
                <option value="106" data-flag="0">No change</option>
                <option value="107" data-flag="0">No change</option>
                <option value="205" data-flag="1">Should Enable -></option>
              </select> </td>
            <td>
              <select name="ThisSecondThing_2" id="ThisSecondThing_2" class="SecondThing" disabled="">
                <option value="43">one thing</option>
                <option value="82">another</option>
              </select> </td>
            <td>
              <input type="Submit" name="ThisSubmit" value="Submit"></td>
          </tr>
        </tbody>
      </table>
    </div>
  </form>

1 Ответ

0 голосов
/ 24 апреля 2020

Попробуйте изменить

var dataFlag = $(".ThisFirstThings option:selected").attr('data-flag');

на

var dataFlag = $(this).find("option:selected").attr('data-flag');

Оригинал dataFlag получил все select.ThisFirstThings на странице. Изменение цели только изменилось select.ThisFirstThings

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...