jquery
  • checkbox
  • input
  • jquery-selectors
  • 2009-04-14 9 views 32 likes 
    32

    한다고 가정 나는 다음과 같은 HTML이 있습니다jQuery를 : 선택 선택 확인란

    이제
    <form id="myform"> 
        <input type='checkbox' name='foo[]'/> Check 1<br/> 
        <input type='checkbox' name='foo[]' checked='true'/> Check 2<br/> 
        <input type='checkbox' name='foo[]'/> Check 3<br/> 
    </form> 
    

    , 내가 '[] foo는'이름으로 확인 입력 필드를 선택 어떻게?

    내 시도이지만, 그것은 작동하지 않습니다 분야의

    $('#myform input[name='foo']:checked:enabled'); 
    
    +0

    당신이 잘, 당신의 선택의 주위에 따옴표를 사용하는이 작품이 무엇을 UMN. :) – cgp

    +1

    예; 내 초기 답변이 최선의 방법이 아니라는 것을 알고 있어야합니다. jQuery는 셀렉터에서 대괄호에 문제가 있었지만이 문제가 수정되어 보유하고있는 항목을 유지할 수 있어야하며 선택기 주위에 큰 따옴표를 사용하면됩니다. –

    답변

    45

    이름, 그것은 foo[]하지 foo입니다. 이 작업을 수행 할 수있을 것, 이상적으로

    $("input[name^='foo']:checked:enabled",'#myform'); 
    

    : 당신은 attributeStartsWith 선택기를 사용할 수

    $("input[name='foo[]']:checked:enabled",'#myform'); 
    

    그러나 this answer는 설명으로, jQuery를이 attr=value 조건의 value 부분을 구문 분석이 사용

    (['"]*)(.*?)\3|)\s*\] 
    

    \ 3 개구를 포함하는 그룹 인 이상하게도 여러개의 따옴표가 있거나 따옴표가 전혀없는 따옴표가 있습니다. . *? 그 다음 첫 번째 ']'문자에 도달 할 때까지 따옴표를 포함한 모든 문자를 구문 분석하여 일치를 종료 할 수 있습니다. 백 슬래시를 이스케이프 처리하는 CSS 특수 문자는 없으므로 jQuery에서 임의의 문자열 값과 일치시킬 수 없습니다.

    즉, jQuery가 첫 번째 ]을 마자 마자 값이 끝났다고 생각합니다. 따라서 여러분은 startsWith 또는 순수한 DOM 요소를 사용하여 그 해답도 설명합니다.

    SUPER아요 중요 편집 :
    가이 버그는 분명히 고정됩니다. 위에서 설명한 "이상적인"코드를 사용할 수 있어야합니다.

    +0

    나는 이것이 버그이며 관련 픽스라고 생각한다. http://dev.jquery.com/ticket/3443 – cgp

    +0

    가장 일반적인 최신 버전 인 jQuery 1.3.2에서는 수정되지 않았다. – bobince

    +0

    내 1.3.2 .... 고정되어 있습니다. –

    0

    나는 이런 식 믿는다

    $("input #foo[] :checked"); 
    

    편집 : 댓글 작성자는 권리입니다. 나는 첫 반응을 보았어 야했다. :) 이번에는 "^"을 사용할 것입니다.

    $("input[name^=foo] :checked"); 
    
    +0

    그러나 []은 worng 일 수 있습니다. – Tacoman667

    +0

    #xyz는 '이름'속성이 아니라 'id'속성입니다. – bobince

    4

    당신은 선택할 때 속성을 인용하고 []을 포함해야한다 : 사실

    $("#myform input[name='foo[]']:checked:enabled"); 
    
    +1

    불행히도 작동하지 않습니다. jQuery 구문 분석기가 처음 만났을 때 []가이 경우에는 허용되지 않습니다. –

    +1

    사실. 이것은 버그입니다. 자세한 내용은 http://stackoverflow.com/questions/739695를 참조하십시오. – bobince

    +0

    오래된 버그. 내 예제를 볼 수 있듯이 최신 버전을 사용하고 계신다면 해결됩니다. – cgp

    1

    , 당신은 단지, 작품을 잘 가지고 따옴표를 사용하고 일치시킬 수 있도록 브래킷을 포함하는 것.

    $("#myform input[name='foo[]']:checked:enabled"); 
    

    현재 작업에서 볼 수 있습니다 : jQuery를 탈출의 필요성을 둘러싼 많은 혼란을 설명 할 수있는 과거에 괄호로 및 해제 문제를 갖고 있음을 http://jsbin.com/oyoro

    참고. 나는 내가 괄호로 문제를 풀어봤을 뿐이라는 것을 알고있다.

    참조 : http://dev.jquery.com/ticket/3443

    +0

    * mumble * * mumble * * mumble * 내가 틀렸다면 나는 철회하겠다. – cgp

    +0

    Touche, kind Sir. -1 제거됨, +1. 이 새로운 지식으로 내 대답을 업데이트했습니다. –

    +0

    혼란을 가져 주어서 유감스럽게 생각합니다. 저는 며칠 전에 보비스 인이 대답에서 말한 것에 대해 생각하고 있었기 때문에 그것이 현재의 것이라고 생각했습니다. 다음에 나 자신을 확인해 줄거야. –

    관련 문제