2012-05-13 2 views
1

jQueryUI를 사용하여 라디오/체크 상자 입력의 단추 세트를 만드는 경우 명시 적 레이블을 사용해야합니다. 즉, ID로 labelinput에 연결해야합니다.jQueryUI 단추 세트에 고유 ID가 필요함

동일한 페이지에서 여러 개의 동일한 버튼 세트를 사용하려는 경우 ID가 문서에서 고유해야하므로 모든 버튼 세트에 동일한 코드를 사용할 수 없습니다.

대부분의 브라우저는 고유하지 않은 ID를 허용하지만 웹 표준을 위반하지 않아도됩니다. 그리고 앞으로 브라우저가 비 고유 ID를 계속 지원할 것이라는 보장이 없습니다.

나는 모든 상황에 대해 고유 한 ID를 생성 할 수 있지만 코드를 복잡하게 만들고 ID가 실제로 고유하다는 문제를 추가합니다.

여러 개의 동일한 버튼셋을 처리하는 가장 좋은 방법은 무엇입니까?

이 문제를 보여줍니다 내 특정 상황에서 http://jsfiddle.net/C3NyV/1/

을의 buttonset은 위젯 팩토리를 사용하여 만든 플러그인에 의해 생성됩니다. 이 특정 문제에 대한 해결책으로 이것이 도움이되는지 나는 모른다.

답변

1

jQuery UI에 관계없이 접근성을 위해 모든 입력의 id 속성을 for 속성이있는 레이블과 일치시켜야합니다. 화면 판독기가 입력 필드를 만날 때이 기준을 사용하여 일치하는 레이블을 찾습니다.

고유 한 식별자를 생성하는 대신 다른 세트간에 구별하기 위해 더 의미가있는 것을 사용하는 것이 좋습니다. 더 많은 작업이 될 수도 있지만보다 표준적이고 액세스 가능하며 관리하기 쉬운 코드가 될 것입니다.

+0

글쎄, 그러고 싶지만, 문제는 이것이다 : 1. jQueryUI buttonset()은 ID를 사용해야한다. 2. HTML 사양에서는 ID가 고유해야합니다. 단일 페이지에서 버튼 세트를 여러 번 사용하려는 경우이 두 가지가 서로 어긋나는 것처럼 보입니다. DOM 노드를 직접 참조하면 집합을 구별하는 것이 문제의 일부가 아닙니다. – Martijn

+0

어떤 2 ​​개의 ID가 필요한지 구체적으로 설명해 주시겠습니까? Fiddle - http://jsfiddle.net/bRhRM/1/을 업데이트했습니다. 두 컨테이너간에 다른 유일한 ID는 액세스 가능한 마크 업에 필요한 4 개의 라디오 버튼 자체의 ID입니다. –

+0

예, 문제는 radiobuttons의 HTML 코드가 클라이언트 측에서 생성되어 고유 한 ID를 만드는 것이 어렵다는 것입니다. 비교적 비싼 generate/check-if-exists 루프를 수행하지 않으면 생성 된 ID가 이미 존재하지 않습니다. 이상적으로 buttonset()은 ID에 의존하지 않을 것입니다. – Martijn

관련 문제