Perl和jQuery从多选下拉列表中选择元素

时间:2014-10-22 09:05:47

标签: jquery perl checkbox multi-select jquery-multiselect

我有一个多选下拉列表,其中哈希%all_colors中有8种颜色:

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>

现在我要添加2个新复选框。

<div>
    <input type="checkbox" name="maincolors" value="1" class="inputCheckbox" /> Main Colors
    <input type="checkbox" name="resetofcolors" value="1" class="inputCheckbox" /> Rest of the Colors
</div>

在Perl中,我添加了一个常量来选择checkbox1并在perl中使用常量来调用复选框。当&#34;主要颜色&#34;我不知道如何使用它来在下拉列表中选择这4个值。复选框已选中。当点击&#34;剩下的颜色&#34;时,应检查其余的颜色。复选框。

use constant MAIN_COLORS => {
    1 => 'Red',
    2 => 'Orange',
    3 => 'Green',
    4 => 'White',
};

my $main_colors = MAIN_COLORS;

我编写了一个使用纯HTML的代码,但实际上我想从Perl hash中调用颜色

<select id="multipeColorSelect" multiple size="8">
    <option value="Red" class="maincolor">Red</option>
    <option value="Orange" class="maincolor">Orange</option>
    <option value="Green" class="maincolor">Green</option>
    <option value="White" class="maincolor">White</option>
    <option value="Yellow">Yellow</option>
    <option value="Blue">Blue</option>
    <option value="Black">Black</option>
    <option value="Brown">Brown</option>
</select>

但我不希望这使用简单的HTML,而是我想要:
1)如果我选择checkbox1&#34; Main Colors&#34;,它应该从下拉列表中自动选择红色,橙色,绿色,白色,即。它应该从哈希值调用值。
2)如果我选择checkbox2&#34;其余颜色&#34;,它应该自动从下拉列表中选择其余颜色,即。它应该从哈希值中调用其余的值。

请帮忙。

此外,有一些条件在jQuery中没有按预期工作。我也需要jQuery的帮助。

1)如果从下拉列表中随机选择任何1种颜色而不是选中复选框,则我要禁用与该组无关的复选框。
例如:如果直接从下拉列表中选择红色,&#34;其他颜色&#34;复选框应该被禁用。如果我取消选择红色并直接选择布朗,那么&#34;其余的颜色&#34; 复选框应该重新启用和&#34;主要颜色&#34;复选框应禁用。
2)选择其他元素时,不需要禁用一组四个元素。两者都可以同时选择,以便通过选中两个复选框来选择所有选项。允许用户选择和取消选择已在下面的jQuery代码中工作的四人组成员 3)如果&#34;怀特&#34;和&#34;黄&#34;从下拉列表中同时选择两者,然后应启用两个复选框。

$('input[name="colorcheckbox"]').click(function () {

    var colorsToSelect = $(this).val();

    if($(this).prop('checked') == true) {
        if(colorsToSelect == 'maincolors') {
            $('#multipeColorSelect option').slice(0,4).prop('selected', true);
        } else if (colorsToSelect == 'restofcolors') {
            $('#multipeColorSelect option').slice(4,8).prop('selected', true);
        } 
    } else {
        if(colorsToSelect == 'maincolors') {
            $('#multipeColorSelect option').slice(0,4).prop('selected', false);
        } else if (colorsToSelect == 'restofcolors') {
            $('#multipeColorSelect option').slice(4,8).prop('selected', false);
        }
    }
});

请帮忙。

0 个答案:

没有答案