没有按住Ctrl键单击的多选框

时间:2014-09-02 08:20:49

标签: javascript jquery firefox multi-select

我正在使用此stackoverflow帖子中写的代码

How to avoid the need for ctrl-click in a multi-select box using Javascript?

在许多其他文章中也建议不进行ctrl-click进行多项选择。

代码:

$('option').mousedown(function(e) {
    e.preventDefault();
    $(this).prop('selected', !$(this).prop('selected'));
    return false;
});

问题是代码无法在FireFox 31.0上运行。 你可以使用以下链接试试

FIDDLE

是否有人知道解决此问题的方法:)

1 个答案:

答案 0 :(得分:1)

以下代码适用于firefox 31.0,IE 10和crome 36.0.1985.143。但如果同时使用CTRL键,则效果不佳。

 $('select').bind("click", function (event, target) {

        event.preventDefault();
        var CurrentIndex = event.target.selectedIndex==undefined? $(event.target).index(): event.target.selectedIndex
        var CurrentOption = $("option:eq(" + CurrentIndex+ ")", $(this));
        if ($(CurrentOption).attr('data-selected') == undefined || $(CurrentOption).attr('data-selected') == 'false') {
            $(CurrentOption).attr('data-selected', true);
        }
        else {
            $(CurrentOption).prop('selected', false).attr('data-selected', false);
        }

        $("option", $(this)).not(CurrentOption).each(function (Index, OtherOption) {
            $(OtherOption).prop('selected', ($(OtherOption).attr('data-selected') == 'true') ? true : false);
        });
         return false;
    });