jQuery Validate: Очистить индивидуальную / конкретную ошибку поля с помощью Select2 [duplicate]

Большинство продуктов RDBMS будут оптимизировать оба запроса одинаково. В «настройке производительности SQL» Питера Гулуцана и Труди Пельцер они протестировали несколько брендов РСУБД и не обнаружили разницы в производительности.

Я предпочитаю сохранять условия соединения отдельно от условий ограничения запроса.

Если вы используете OUTER JOIN , иногда необходимо добавить условия в предложение join.

2
задан j0k 28 September 2014 в 07:14
поделиться

1 ответ

По умолчанию проверка в поле срабатывает только этими событиями (для поля type="text") ...

  • onfocusout, когда пользователь покидает поле (проверяет просто поле)
  • onkeyup, когда пользователь вводит в поле (проверяет только поле)
  • onclick, когда пользователь нажимает кнопку submit ( проверяет всю форму)

Если вам необходимо программно инициировать проверку после программного изменения поля, вам необходимо вызвать метод .valid() на этом поле. Это эффективно инициирует проверку, аналогичную предыдущим событиям.

$('#myField').valid();  // validates just field element with id="myField"

$('#myForm').valid();  // validates the whole form

Таким образом, вам нужно найти метод в select2, который запускается всякий раз, когда значение изменяется и помещает .valid() внутри него. Похоже, что событие change - это то, что вам нужно.

$("#vedit-filter").select2({
    // your options here
}).on('change', function() {
    $(this).valid();
});
5
ответ дан Sparky 15 August 2018 в 20:46
поделиться
  • 1
    Это, похоже, решает проблему удаления класса ошибки, но не от начальной загрузки страницы со значением по умолчанию (с использованием initSelection). Другими словами, на странице загружается значение по умолчанию - если я не коснусь его и не передаю форму, это недействительно. Если я его сейчас изменю, он правильно проверит и удалит ошибку (после вашего исправления выше). – user756659 25 September 2014 в 20:42
  • 2
    @ user756659, адаптируйте информацию, предоставленную мной в ответ на вашу конкретную ситуацию. Это означает, что вы просто вызываете $("#vedit-filter").valid() при загрузке страницы. – Sparky 26 September 2014 в 07:23
  • 3
    Пробовал это, и это не сработало - это initSelecton, который добавляет значение по умолчанию. Я закончил вручную добавление значения по умолчанию в html как <input id="vedit-filter" type="text" name="settings[filter]" value="<?php echo escapeStr($result['filter']); ?>" class="form-control select2me"/>, однако, я бы предпочел не использовать этот метод, если это вообще возможно ... Я могу думать об одной ситуации, когда я не могу использовать это решение. – user756659 26 September 2014 в 08:16
Другие вопросы по тегам:

Похожие вопросы: