Я могу проверить множественный выбор с помощью jquery-validate и создал скрипту как демо. Снимите выделение, удерживая Ctrl, и нажмите на выделение, чтобы увидеть эффект.
<form id="myform">
<select id="id_deals-1-sales_item" class="multi_select_mandatory" name="deals-1-sales_item" multiple="multiple">
<option value="1">Hotel 3 Star</option>
<option selected="selected" value="2">Hotel 4 Star</option>
</select>
</form>
$(document).ready(function() {
var validator = $('#myform').validate({
// options
rules: {
"deals-1-sales_item": "required",
},
//ignore: ':hidden:not("#id_deals-1-sales_item")'
});
});
Но как только я выбрал множественный выбор, он перестает работать: см. fiddle.
$('#id_deals-1-sales_item').chosen();
Во время исследования я обнаружил, что кто-то пробовал это с jquery multiselect
вместо selected. Кажется, что скрытые элементы игнорируются при проверке jquery. Я попытался применить это решение, но, поскольку у Chosen разные методы, я застрял (мультиселект не существует в selected)
Есть ли здесь какой-нибудь гуру jQuery, который мог бы указать мне правильное направление? Кроме того, я бы предпочел, чтобы решение было основано на классах, а не на именах полей. Как это:
Это решение, которое я придумал на полпути. Но не знаю, как поступить с ???
.
$.validator.addMethod("needsSelection", function(value, element) {
return $(element).???.length > 0;
});
var validator = $('#myform').validate({
});
$('#myform').find('select.multi_select_mandatory').each(function(){
$(this).change(function(){
$(this).valid();
});
$(this).rules('add', {
needsSelection: ""
});
});
Решение:
С приведенным ниже решением eicto я смог создать решение на основе класса, а не на основе имени поля. Это особенно полезно, когда у вас есть динамические элементы, которые вы хотите проверить мгновенно, не отправляя ничего на сервер.
var validator = $('#deal_modal_form').validate({
// options
ignore: ':hidden:not(.chzn-done)'
});
$('#myform').find('select.multi_select_mandatory').each(function(){
$(this).chosen().change(function(){
$(this).valid();
});
$(this).rules('add', {
required: true,
});
});
change
срабатывает до того, какselect
на самом деле обновляет... еще хуже... он не обновляет выбранные.... - person zb'   schedule 24.12.2012