Select2 не проверяется с помощью плагина jquery-validate в Jquery 3.3.1 - PullRequest
0 голосов
/ 18 февраля 2019

Я работаю над проектом, который требует, чтобы я использовал все последние версии jquery.

Проблема в моей форме, я проверяю входные данные выбора select2 и эта проверка работает на jquery 2.2+0,4.но как-то в jquery 3.3.1 это не работает.я использую следующий код, чтобы игнорировать скрытые входы входов select2 и, как я уже сказал, он работает на jquery 2.2.4

$('.js-states').select2();

$.validator.setDefaults({
  ignore: ":hidden:not(.js-states)"
});

$("#this_form").validate({
  rules: {
    input_1: {
      require_from_group: [1, ".requered-group"]
    },
    input_2: {
      require_from_group: [1, ".requered-group"]
    },
    'input_3[]': {
      require_from_group: [1, ".requered-group"]
    }
  }
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/css/select2.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/js/select2.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.0/dist/jquery.validate.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.0/dist/additional-methods.js"></script>

<form id='this_form'>
  <select class="js-states form-control requered-group" multiple="multiple" name="input_3[]" tabindex="-1" style="display: none; width: 100%;">
    <option value="all_services">ALL</option>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='3'>3</option>
  </select>
  <input type='text' name='input_1' class='requered-group'>
  <input type='text' name='input_2' class='requered-group'>
  <input type='submit' name='action' value='submit'>
</form>

JS Fiddle

смело меняйте jquery с 3.3.1 на 2.2.4 и посмотрите, как это работает.спасибо

1 Ответ

0 голосов
/ 18 февраля 2019

jQuery 3+ возвращает пустой массив для элементов select-множественный, тогда как до этого он возвращал ноль.Плагин проверки, кажется, обрабатывает это как допустимое значение.

С http://api.jquery.com/val/

Когда первый элемент в коллекции - select-multiple (то есть, selectэлемент с установленным атрибутом multiple), .val() возвращает массив, содержащий значение каждого выбранного параметра.Начиная с jQuery 3.0, если никакие опции не выбраны, он возвращает пустой массив;до jQuery 3.0 он возвращает null.

Возможно, вам придется написать для этого специальные проверки или запросить исправление проблемы в самом плагине.

...