У меня есть MULTISELECT выпадающий список, который имеет 8 цветов в хэш% all_colors:Используйте тот же класс для различных флажков с помощью JQuery
my %all_colors = (
1 => 'Red',
2 => 'Yellow',
3 => 'Orange',
4 => 'Blue',
5 => 'Black',
6 => 'Brown',
7 => 'Green',
8 => 'White',
);
Я поставил его в раскрывающемся списке, как это:
my $color_selector = '<select name="all_colors">';
foreach my $color (sort {$all_colors{$a} cmp $all_colors {$b}} keys %all_colors) {
$color_selector .= qq~<option value="$color">$all_colors{$color}</option>~;
}
$color_selector .= '</select>';
<div><% $color_selector %></div>
И в Perl я добавил еще одну константу, чтобы выбрать checkbox1 и использовать константу в perl, чтобы вызвать этот флажок. Остальные цвета должны быть отмечены при нажатии кнопки «Остальные цвета».
use constant MAIN_COLORS => {
1 => 'Red',
2 => 'Orange',
3 => 'Green',
4 => 'White',
};
my $main_colors = MAIN_COLORS;
Я написал HTML код для флажка и JQuery, чтобы выбрать цвет из выпадающего меню при щелчке флажка.
<div>
<input type="checkbox" data-class="maincolors" name="colorcheckbox" value="<% $main_colors %>" class="inputCheckbox" /> Main Colors
<input type="checkbox" data-class="restofcolors" name="colorcheckbox" class="inputCheckbox" /> Rest of the Colors
</div>
jQuery(document).ready(function() {
jQuery('input[name="colorcheckbox"]').click(function() {
var isselect = '';
var main_colors = jQuery('input[data-class="main-colors"]').val().split('|');
var colorsToSelect = jQuery(this).val();
if (jQuery(this).prop('checked')) {
isselect = 'selected';
}
if (jQuery(this).data('class') == 'main-colors') {
for (var i=0; i < main_colors.length; i++) {
jQuery('#allcolors option[value=' + main_colors[i] + ']').prop('selected', isselect);
}
} else {
for (var i=0; i < jQuery('#allcolors option').length; i++){
if (jQuery.inArray(jQuery('#allcolors option')[i].value, main_colors) < 0) {
jQuery('#allcolors option')[i].selected = isselect;
}
}
}
if (jQuery(this).prop('checked') == true) {
if (colorsToSelect == 'maincolors') {
jQuery('#multipeColorSelect option').prop('selected', true);
} else if (colorsToSelect == 'restofcolors') {
jQuery('#multipeColorSelect option').prop('selected', true);
}
} else {
if (colorsToSelect == 'maincolors') {
jQuery('#multipeColorSelect option').prop('selected', false);
} else if (colorsToSelect == 'restofcolors') {
jQuery('#multipeColorSelect option').prop('selected', false);
}
}
});
jQuery('#allcolors').change(function() {
jQuery('.inputCheckbox').prop('checked', false);
});
});
Если я хочу добавить еще один флажок в будущем, которое включает в себя одну из групп основных цветов, то я хочу, чтобы добавить другой класс, который не является хорошей идеей. Поэтому мое требование: пока для вышеприведенного кода я не хочу использовать разные классы «maincolors» и «restofcolors», вместо этого хочу решить это, используя тот же класс (только для одного класса для всех флажков). Пожалуйста помоги.
Я поместил ваш код в JSFiddle, но он не работает: http://jsfiddle.net/nj2b0bdr/ В коде есть несколько ошибок - вы проверили его, прежде чем публиковать его здесь? –
Да, я проверил, но я не могу найти, где я ошибаюсь. – user2201935
Он не работает в jsfiddle, потому что там есть код Perl – user2201935