在这里小提琴:https://jsfiddle.net/q0o11c5e/17/
我有一个多选列表框,其中包含'无'满足以下要求:
这是通过jQuery的Change函数实现的。我的问题:
1)首先,对于#2(完全Ctrl +单击取消选择):流程根本不会进入$( "#listbox" ).change(function()
。您可以看到,因为如果您选择' A '然后按住Ctrl +单击取消选择它,功能顶部的警报不会显示。
2)对于#1,如果选择包括'无' (值'')在任何地方,我创建一个空白数组,推送''在它上面,并将Listbox Val设置为它(并立即中断),但这不起作用。
$( "#listbox" ).change(function() {
alert('SelArray: ' + $('#listbox').val() + ' Length: ' + $('#listbox').val().length);
// If no selection, automatically select 'None'
if ($('#listbox').val().length == 0) {
alert('Nothing selected');
}
else
{
// If new selection includes empty ('None'), deselect any other active selections
$.each($('#listbox').val(), function (index, value) {
if (value == '') {
alert('None selected, clearing anything else..');
var noneOnly = {};
noneOnly.push('');
$('#listbox').val(noneOnly);
return false;
}
});
}
});
答案 0 :(得分:1)
如果我的意图正确,如下所示?
$( "#listbox" ).change(function() {
var arr= $(this).val();
if (arr == null || arr.length === 0 || (arr.length > 1 && arr[0] === ''))
$(this).val(['']);
});
这只是在没有选择任何值或选择多个值时设置选择,包括' none'
答案 1 :(得分:1)
$("#listbox").on("input change", function() {
if($(this).find("option[value='']:selected").length!=0 || $(this).find("option:selected").length==0) {
$(this).find("option").attr("selected", false);
$(this).find("option[value='']").attr("selected", true);
return false;
}
});
嗨,查看我上面的代码,这是我的尝试https://jsfiddle.net/q0o11c5e/22/
答案 2 :(得分:0)
(代表问题作者发布)。
现在已解决,最后在这里提琴:https://jsfiddle.net/q0o11c5e/23/
JS代码:
$( "#listbox" ).change(function() {
var arr= $(this).val();
if (arr == null || arr.length === 0 || (arr.length > 1 && arr[0] === '')) {
$(this).val(['']);
}
else
{
// If new selection includes empty ('None'), deselect any other active selections
$.each(arr, function (index, value) {
if (value == '') {
var noneOnly = [];
noneOnly.push('');
$('#listbox').val(noneOnly);
return false;
}
});
}
});