感謝大家!現在問題解決了,最終小提琴這裏: https://jsfiddle.net/q0o11c5e/23/jQuery Multi-Select Listbox其中'None'選項取消選擇所有其他
我有一個多選列表框與下列要求「無」:在選擇
- 選擇「無」包括隨時隨地 =>只'沒有' 被選中(其他任何被關閉)
- 取消選擇任何其他項目 與Ctrl +點擊,如果沒有其他選擇,將自動 選擇'無'。
這是用jQuery的Change函數實現的。我的問題:
1)首先,對於#2(全Ctrl +單擊取消選擇):流程根本不會進入$("#listbox").change(function()
。您可以看到,因爲如果選擇'A',然後使用Ctrl +單擊取消選擇,則不會顯示該函數頂部的警報。 2)對於#1,如果選擇包括'None'(值'')任何地方,我創建一個空白數組,將''推到它,並設置列表框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;
}
});
}
});
只是一個小問題,與你的問題無關,但對我來說,選擇「全部」將意味着所有的選項應該被選中,我會如果選擇「全部」視覺選擇「無」,將會感到困惑。更有甚者,如果*取消選擇所有選項,然後自動選擇「全部」,則感覺您所描述的UI與直覺相反。 –
沒錯,我現在將它重新命名。 –
在取消選擇的代碼中看起來像'noneOnly'實際上是一個對象:'{}'。如果您將其更改爲'[]',則取消選擇應該更好。 –