2011-08-24 4 views
1

런타임시 템플릿을 사용하여 동적으로 빌드 된 HTML 양식이 있습니다. 이는 사용자 작업에 의해 결정됩니다.노드 깊이별로 정렬 한 다음 어떻게 tabindex로 정렬합니까?

각 조각 내에서 지정된 tabindexing에 따라 양식 전체에 탭 인덱스를 설정해야합니다.

이 점을 감안할 때 jQuery에는 세트 내의 항목을 주문하는 방법이 있습니까?

$("input, textarea, select, input:checkbox, input:radio").orderBy("templateIndex, tabIndex"); 

:

<div name="firstTemplate" templateIndex="0"> 
    <input type="text" name="field0" tabIndex="1" /> 
    <input type="text" name="field1" tabIndex="2" /> 
    <input type="text" name="field2" tabIndex="3" /> 
</div> 
<div name="firstTemplateRpt" templateIndex="1"> 
    <input type="text" name="field0" tabIndex="1" /> 
    <input type="text" name="field1" tabIndex="2" /> 
    <input type="text" name="field2" tabIndex="3" /> 
</div> 
<div name="secondTemplate" templateIndex="2"> 
    <input type="text" name="field0" tabIndex="1" /> 
    <input type="text" name="field1" tabIndex="2" /> 
    <input type="text" name="field2" tabIndex="3" /> 
</div> 

나는 다음 개념의 몇 가지 변화를 사용할 수 있습니다 :이 의사 구조가 좋지 않을까,하지만 난 그것을 달성하는 방법을 알아낼 수 없습니다 다음 인스턴스 뭔가 templateIndex는 폼 내의 템플릿 인덱스이고 tabindex는 템플릿 내의 컨트롤의 tabindex입니다. 서식 파일을 런타임에 양식에 여러 번 추가 할 수있어 수동으로 지정된 탭 색인이 손상 될 수 있습니다.

다른 템플릿 형태로 첨가되면, 배열로 templateIndex 속성 div의 수집 1.

답변

0

다시 시작의 수동 설정 tabIndexes으로 templateIndex = "3"에 할당 될

inpArray.sort(function(a, b) { 
    return a.tabIndex - b.tabIndex; 
}); 
,617 :

divArray.sort(function(a, b) { 
    return a.getAttribute('templateIndex') - b.getAttribute('templateIndex'); 
}); 

그럼 매우 유사한 기능을 사용하여 상기 어레이 내부의 입력을 반복하고 그 위에 정렬 : 다음과 같이 그들을 정렬

그런 다음 node.parentNode.insertBefore (node, firstChild)과 같은 것을 사용하여 문서에서 필요한 순서로 요소를 이동합니다.

+0

당신은 그 핵심을 가지고 있다고 생각합니다. 나는 그것을 시도 할 것입니다. 문서에서 필드를 이동하지 않으려는 경우, tabindexes를 1에서 * n *까지 순차적으로 실행하도록 조정하고 싶습니다. 여기서 * n *는 필드 수입니다. 나는 네가 나에게 주신 것이 내가 거기에 도착하는 데 도움이 될 것이라고 생각한다. 고마워. – BenAlabaster

+0

그러면 노드를 반복하고 루프 카운터를 기반으로 속성을 추가하면됩니다. 당신은 콜렉션을 사용할 수 있고, 재귀 적으로 DOM을 무제한 (또는 정의하지만 가변적 인) 깊이로 사용할 수 있습니다. 어쨌든. – RobG

관련 문제