Как правильно проверить значение параметра, которое использует Select2? У меня проблема, когда какое-то значение задается перед тем, как перейти на любой другой. Он выглядит правильно, но ошибка проверки отображается до тех пор, пока я не изменю значение. Спасибо за любую помощь.jQuery Select2 & Validation Engine
ответ
Попробуйте это решение.
How to make jQuery validation engine works well for select2()?
Обратите внимание, что [ссылки только ответов] (http://meta.stackoverflow.com/tags/link-only-answers/info) обескуражены, ответы SO должны быть конечной точкой поиска решения (vs. еще одна остановка ссылок, которые со временем становятся устаревшими). Пожалуйста, подумайте о добавлении отдельного резюме здесь, сохранив ссылку в качестве ссылки. – kleopatra
В select2.js файл
Найти эту (линия 341)
if (this.indexOf("select2-") !== 0) {
И заменить
if (this.indexOf("select2-") !== 0 && this !== "validate[required]") {
У меня была такая же проблема. Таким образом, в select2.min.js найти этот инсульты (должно быть 2 ходов в сценарии):
D(this.container,this.opts.element,this.opts.adaptContainerCssClass)
и добавить этот код сразу после инсульта вы нашли
,this.container.removeClass("validate[required]")
это должно решить вашу проблему.
Добавьте этот css в свой тег заголовка.
.has-error {
border-color: #dd4b39 !important;
}
и вот как я вызываю select2 для механизма проверки JQuery.
$("#form").validate({
ignore: ".ignore, .select2-input",
rules: {
txtproduct: "required",
txtwarehouse: "required",
//txtdescription: "required",
txtquantity: {required:true,number:true},
txtrate: {required:true,number:true},
txtdiscounttype: "required",
txtdiscount: {required:true,number:true},
txtamount: {required:true,number:true},
},
highlight: function (element, errorClass, validClass) {
$(element).addClass("has-error");
if($(element).hasClass('select2-hidden-accessible'))
{
$(element).next().find("[role=combobox]").addClass('has-error');
}
},
unhighlight: function (element, errorClass, validClass) {
$(element).removeClass("has-error");
if($(element).hasClass('select2-hidden-accessible'))
{
$(element).next().find("[role=combobox]").removeClass('has-error');
}
}
});
}
Ответы на простой код не принимаются для переполнения стека. Не могли бы вы объяснить, что делает ваше решение и как оно решает проблему. –
Привет, Neol это JQuery Validation Engine Issue, который не поддерживает библиотеку select2, и я использовал его, используя строку условий, и она отлично работает для меня. if ($ (element) .hasClass ('select2-hidden-available')) { $ (element) .next(). Find ("[role = combobox]"). RemoveClass ('has- ошибка «); } –
Можете ли вы продемонстрировать этот вопрос с какой-то код? Я не могу представить, что вы имеете в виду. –