2016-08-26 100 views
0

我有這個JS,當選擇一定數量的項目將禁用其他選項,並選擇這些項目將更新計數,但它的工作很好!當我將它們添加到購物車時,並且在購物車中,我可以進行編輯,因此當我點擊編輯時,它會返回到產品頁面,並且我有選擇的選項是由客戶在添加到購物車時選擇的但我的計數顯示爲0和3,其他選項未禁用。檢查頁面加載使用jQuery檢查輸入量

我知道我需要做一個頁面加載每個/ foreach檢查是否有任何複選框檢查,如果是這樣,並在極限禁用其他等,但它花了我一段時間。我想獲得一些幫助,讓它到達這個小提琴的位置。我如何檢查這些負載?

原始小提琴:

https://jsfiddle.net/ate9a04u/2/

JS:

$(document).ready(function() { 
    var maxAllowed = 3; 
    $(".rmax").html(maxAllowed); 

    $(".subscribtion-content input.checkbox").change(function() { 
    var checkBox = $(".subscribtion-content input.checkbox") 
    var cnt = $(".subscribtion-content input.checkbox:checked").length; 
    if (cnt == maxAllowed) { 
     checkBox.not(':checked').prop('disabled', true); 
    } else { 
     checkBox.not(':checked').prop('disabled', false); 
    } 

    $(".rcount").html(cnt); 
    }); 
}); 
+0

增加了一個複選框已經在這裏檢查:https://開頭的jsfiddle .net/ate9a04u/4/- 1中的3個複選框只需要更新計數值,並且https://jsfiddle.net/ate9a04u/5/有3個默認選擇,所以應該說3的3和禁用其他人,直到一個取消選擇。感謝先進的傢伙! – James

回答

2

認爲你說你想要的.change()處理程序運行不只是當一個複選框相同的處理被點擊,但也在頁面加載。

如果是這樣,只需手動觸發.change()在現有的準備處理程序綁定後立即處理程序自己一次:

$(document).ready(function() { 
    var maxAllowed = 3; 
    $(".rmax").html(maxAllowed); 

    $(".subscribtion-content input.checkbox").change(function() { 
    var checkBox = $(".subscribtion-content input.checkbox") 
    var cnt = $(".subscribtion-content input.checkbox:checked").length; 
    if (cnt == maxAllowed) { 
     checkBox.not(':checked').prop('disabled', true); 
    } else { 
     checkBox.not(':checked').prop('disabled', false); 
    } 

    $(".rcount").html(cnt); 
    }).change(); // <--- this is all you need to add 
}); 

演示:https://jsfiddle.net/ate9a04u/6/

+0

哇,那簡直太令人難以置信!我剛剛開始寫一個每個循環,以及...甚至不需要!謝了哥們!不記得那個:) – James

+0

不客氣。請注意,您可以在不丟失任何可讀性的情況下讓函數稍微短一些 - 以下版本可避免重複使用'「.subscribetion-content input.checkbox」'選擇器並免除if/else:https://jsfiddle.net/ate9a04u/7 / – nnnnnn