2010-11-22 4 views
0

사용자가 양식의 확인란을 선택하거나 선택 취소하면 전역 배열을 업데이트하려고합니다. 그러면 배열이 서버에 제출되어 데이터베이스의 선택된 옵션을 업데이트합니다. 체크 된 체크 박스의 ID를 배열로 밀어 넣었지만이를 제거하는 방법을 모르겠습니다.확인란에서 전역 배열의 특정 요소 제거 JavaScript로 확인 및 선택 취소

여기 보여주기 위해 기본 jsFiddle을 만들었습니다

http://jsfiddle.net/ArFuz/

PS - 당신이 체크 박스마다 모든 시간에 걸쳐 반복하고 있기 때문에 배열이 제대로 :)

답변

2

이유는 양식이 제출 될 때 그냥 해, 모든 클릭에이 일을 -있다 : 당신이 아니라도 사용할 수 있습니다 확인 선택기 선택과에 관심이 반복 요소

jyoseph 제안으로

-. 당신은 이름/값 배열

예를 구축하려면 여기를 직렬화 배열을 사용할 수

$('#submitButton').click(function(ev){ 

    var ids = []; 

    $(':checkbox:checked').each(function(){ 

     ids.push(this.id); 

    }); 

    //do something with ids 

}); 
+0

문제는 테이블에 페이지 매김이 있다는 것입니다. 페이지가 호출 될 때마다 값을 업데이트하는 게시물이 없습니다. 따라서 전역 배열과 모든 check/uncheck시에 업데이트 할 필요가 있습니다. – RyanP13

+1

@ RyanP13 Ah - 최신 요구 사항 뉴스! 이 정보로 나는 위의 말을하지 않았을 것입니다! – redsquare

+1

P.S 모든 체크 박스에서 클릭 이벤트 대신 .delegate를 사용합니다. – redsquare

2

나중에 네임 스페이스 willbe 그냥 처음에 배열을 비우고 만 다시 선택한 항목을 넣어 : 당신이 JQ 좋은 것 같아요

ids = []; 

if (this.checked) {  
    ids.push(this.id); 
} 
+0

'this.checked'와'$ (this) .attr ("id")를 사용하여'$ (this))'를 사용하는 것이 더 효율적입니다. OP의 코드에는 약간의 오류가 있었으며 수정되었습니다. 당신의 대답에 +1. –

+0

괜찮습니다. 고쳐 주셔서 감사합니다. – Jon

1

uery serializeArray() (api link)

$('#myForm input[type=checkbox]').change(function(){ 

    // get all checked checkboxes 
    var ids = $('myForm input[type=checkbox]:checked').serializeArray(); 

}); 

편집 : JSBin example