2014-09-24 121 views
0

我有一個HTML表單,其中有多個複選框,都具有相同的class =「shared」。 我用下面的其中工程按預期一時間可選中複選框的數量限制爲3:jQuery:如何將可變數量的複選框值分配給變量

$(document).on('change', '.shared', function() { 
    var countShared = $('.shared:checked').length; 
    if(countShared > 3 && $(this).is(':checked')) { 
     alert("You can only select up to 3 departments to share with."); 
     $(this).prop('checked',false); 
    } 
}); 

現在我的問題是這樣的:

我有3個變量,shared1,shared2並共享3,並希望將上面選中的複選框的值分配給這些變量。 我正在尋找的東西,將第一個選中的複選框的值分配給變量shared1,第二個選中的複選框的值爲shared2,第三個選中的複選框的值爲shared3

通常我會嘗試一個.each循環的類似的東西,然後去類.shared,但我不知道如何應用這個在這裏,因爲也可能少於3或沒有複選框檢查,我不知道哪些是。

有人能告訴我怎麼才能實現這個嗎? Tim先生非常感謝。

+0

你可以分享你的標記代碼嗎?你有什麼辦法處理shared1,2,3變量? – 2014-09-24 11:49:50

+0

我無法共享所有代碼,因爲這太多了,但我想通過Ajax調用來傳遞這些變量,以便對數據庫進行一些更新。 – user2571510 2014-09-24 11:52:03

+1

有多少可用的複選框,並有複選框有任何唯一的ID? – 2014-09-24 11:53:18

回答

1

最初將每個變量設置爲false

然後,如果沒有檢查框,就完成了。如果有,只需將shared1設置爲true即可。如果有兩個,則將shared1和shared2設置爲true,最後,如果有三個複選框,則將所有三個設置爲true。

shared1 = false; 
shared2 = false; 
shared3 = false; 
var checkedBoxes = $('.shared:checked'); 
if (checkedBoxes[0]) shared1 = true; 
if (checkedBoxes[1]) shared2 = true; 
if (checkedBoxes[2]) shared3 = true; 
+0

我首先讀到這個錯誤,但這實際上效果很好!非常感謝 - 我會盡快接受。 :) – user2571510 2014-09-24 11:56:50

+1

您可以使用'checkedboxes [checked] checked',但是不需要這樣做,因爲選擇器'.shared:checked'只會選中被選中的方框(因此值始終爲true) 。 – fstanis 2014-09-24 12:07:55

1

如果你把所有的家長中的複選框的元素,你可以嘗試以下 -

$(YourSelector).index() 

這將返回複選框的索引號,並可以分配給相應的變量。

只需檢查索引是1的位置並將其分配給shared1變量等等。