我正在使用此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上运行。 你可以使用以下链接试试
是否有人知道解决此问题的方法:)
答案 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;
});