2010-11-25 4 views
1
 
<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이 체크됩니다.jQuery를 사용하여 양식 제출시 숨겨진 CSV 필드를 다시 채우는 방법

이제 확인란의 값이 변경되면 숨겨진 CSV 필드도 변경됩니다 (양식을 제출할 때 수행 할 수 있습니까?). 작성된 변수를 사용하면 양식을 제출할 때 CSV 필드를 다시 채울 수 있어야한다고 생각합니다. 즉, selected_ids를 사용하여 체크 박스의 ID를 CSV 끝에 추가합니다 (아직없는 경우). 이 작업을 수행 할 수 있습니까?

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'); 
} 

어떤 종류의 사람

나에게 내 앞의 질문이 코드 주었다

 
$(':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

숫자로 시작하는 ID는 유효하지 않으므로 문제가 발생할 수 있습니다. – RoToRa

답변

3

당신은 간결 .map를 사용하여 속성 요소에서 CSV 구축 할 수 있습니다 :

$(":checkbox").change(function() { 
    var csv = $(":checkbox:checked").map(function() { 
     return this.id; 
    }).get().join(","); 
    alert(csv); 
    $("input:hidden").val(csv); 
}); 

데모 : 사이드 참고로 http://jsfiddle.net/karim79/tqAnX/2/

를, 요소 ID는 숫자로 시작해서는 안된다.

+0

+1 - ID 번호 제한이 HTML5가 아니라 HTML4와 일치 함을 알려드립니다. –

+0

완벽하고 아름답게 간결합니다. 감사합니다. 내 질문에 (체크 박스를 실제로 채우기 위해) 코드의 첫 번째 블록과 함께 작동하지만, 전에 배치 할 때만 작동합니다. 왜 그런지 알기나 해? – CherryFlavourPez

관련 문제