2010-08-26 72 views
0

我有一大堆複選框和一個包含CSV數據的隱藏字段。基本上,我需要根據隱藏字段的值被選中的複選框:如何使用jQuery從隱藏的csv字段填充一系列複選框

<form> 

    <input type="checkbox" id="01" name="01" /> 
    <input type="checkbox" id="02" name="02" /> 
    <input type="checkbox" id="03" name="03" /> 

    <input type="hidden" value="03,01," /> 

</form> 

因此,在上述複選框01和03需要例如要當頁面加載完成後打勾。我還需要確保當複選框的值發生變化時,隱藏的CSV字段也會發生變化(儘管這可能在表單提交時完成)。

我有限的jQuery知識讓我無處可尋,任何幫助都將不勝感激。 (我知道一些這是最好的服務器端完成,但我沒有任何訪問,但JavaScript)。

下面的答案大部分是我想要的。我認爲使用創建的變量,應該可以在表單提交時重新填充CSV字段。即使用selected_ids將複選框的id添加到CSV的末尾(如果它們尚不存在)。這可以做到嗎?

回答

1
var csvValue = $('#csv-input').val(); 
var selected_ids = csvValue.split(','); 
for (var i = 0; i < selected_ids.length; i++) 
{ 
    var selected_id = selected_ids[i]; 
    $('#' + selected_id).attr('checked', 'checked'); 
} 
+0

好的,謝謝。像我這樣的白癡跟我說話。我可以看到'selected_ids'返回#csv-input中所有CSV數據的數組,但是沒有檢查具有相應ID的複選框。我嘗試將第五行更改爲 $('#'+'0'+ i).attr('checked','checked'); 但是,只檢查前兩個複選框(該陣列的總長度是多少?) 是否有可能重新工作上面,使所有的複選框的IDS可以是任何任意的(即更具描述性的),而仍然保持該代碼的簡潔性? – CherryFlavourPez 2010-08-27 09:26:36

+0

我編輯了代碼,它無法正常工作。現在,它從selected_ids中檢索id。您可以使用任何id名稱,而不僅僅是數字。 – Sjoerd 2010-08-27 12:00:08

+0

非常感謝你,那很完美。這取決於你如何分離該IDS 拋出了一個錯誤 VAR tempIdStr + =「ID」,//或「身份證」: – CherryFlavourPez 2010-08-27 13:59:10

0
$(':checkbox').bind('change', function(event){ 
    if (this.checked == true){ 
     // add to hidden field 
     var tempIdStr = $('#cvs-input').val(); 
     // if not in hidden value already 
     if (tempIdStr.indexOf(this.id) > -1){ 
      tempIdStr += "id,"; // or ", id" depending on how you are seperating the ids 
     $('#cvs-input').val(tempIdStr); 
     } 
    } else { 
    // remove from hidden field 
     var tempIds = $('#cvs-input').val().split(','); 
     var index = tempIds.indexOf(this.id); 
     if (index > -1){ 
      tempIds.splice(index, 1); 
      $('#cvs-input').val(tempIds.join(','); 
    } 
}); 
+0

沒有測試過這一點,但我認爲這應該工作 – Nimnam1 2010-08-27 15:51:57

+0

這條線。這部分究竟做了什麼,我該如何修改它? – CherryFlavourPez 2010-08-27 16:09:33

+0

cvs-input的值是用逗號分隔的ID列表。取決於該值是否已經在列表末尾有一個逗號,您不想添加另一個,因爲它看起來像exp。 01,02然而,如果你最後沒有添加逗號,你需要在你添加的id開頭加一個逗號。 – Nimnam1 2010-08-27 17:22:56

相關問題