2012-04-16 89 views
0

我有15個列表項。我允許用戶從中選擇5個。然後我把這個信息放到數組中並提交給服務器。限制選擇數量並將選定數據插入到數組中

<li><a href="#" id="item1" class="select">Item One</a></li> ... etc. 

然後,我使用此代碼來切換選擇項目

function SelectPrizes(){ 
$('a.select').click(function() { 
    $(this).toggleClass("selected"); 
    $(this).text($(this).text() == 'Choose prize' ? 'Selected' : 'Choose prize'); 
    return false; 
}); 
} 

我的問題是,如何只允許5選擇和由ID唯一選擇的項目添加到數組的類。

我知道我可以通過hasClass('selected')進行過濾,但是我無法弄清楚正確的語法。

回答

1

回答你的三個問題:

允許5個選擇:確保的$('a.select.selected')長度不超過你的極限5:

if ($('a.select.selected').length < 5) { 
    // Does not exceed, so we can add... 
} 

只有選定的項目添加到數組:只是「選擇」添加類只有那些項目:

$('a.select.selected').each(function(){ 
    // Add to array 
}); 

hasClass的語法(「選擇」)感到失望先生建議:

if ($(this).hasClass('selected')) { 

} 

失望先生的解決方案,如果你允許用戶選擇超過5個項目,然後選擇剛纔的任何5個工作其中。

此外,建議改善您的HTML。我假設李項目有一個UL父母。將這個類'select'設置爲這個ul父級,並使用選擇器:$('ul.select li a')。click()。

我已經把這個都聚集在一個的jsfiddle你:http://jsfiddle.net/5b8aj/6/

+0

真棒。非常感謝你,我重寫了我的代碼,我的確很討厭。 – 2012-04-17 09:26:48

1

您可以使用slice(start, end)從指定索引開始,從選擇中獲取特定數量的結果。

var results = $("a.select").slice(0, 5); 

你問題的第二部分可以用條件檢查回答:

關於是否選擇5個元素提交決策
if ($(this).hasClass("selected")) { 

} 
1

檢查下面的值不是 -

$('a.select[class*="selected"]').length==5 
相關問題