2013-06-30 1 views
0

12 개의 텍스트 필드 요소가있는 양식이 있습니다. 값의 변경은 Javascript 기능을 실행합니다. 그리고 지금까지해야 할 일을 알았지 만 기능을 유발 한 텍스트 필드의 색인을 발견 할 수 없습니다. 나는 여기에서 보았던 약간의 해결책을 시도했다 & 그러나 성공하지 않았다. 여기Javascript를 사용하여 양식의 텍스트 필드 배열 색인을 얻는 방법은 무엇입니까?

<form action="" method="post" enctype="multipart/form-data" name="myforma1" target="_self" id="myforma1"> 
<input name="txtfield" type="text" id="txtfield" onchange="detect_it(this);" value="name of person" size="20" maxlength="25" /> 
<input name="txtfield" type="text" id="txtfield" onchange="detect_it(this);" value="name of person" size="20" maxlength="25" /> 
<input name="txtfield" type="text" id="txtfield" onchange="detect_it(this);" value="name of person" size="20" maxlength="25" /> 

...

<script> 
function detect_it(oo) 
{ 
alert('Index of triggered element is: ' + oo.index); 
/* rest of code */ 
} 
</script> 

답변

0

귀하의 문제는 인덱스가 요소의 속성되지 않는 것입니다. 그것은 상황에 따라 전혀 다른 인덱스를 가질 수 있지만 이 같은 시도 시도 할 수 있습니다 : 당신은 아마 모든 입력을 동일한 이름과 ID를 제공해서는 안

function detect_it(oo){ 
    var inputs = document.getElementsByTagName('input') 
    for (var i = 0 ; i<inputs.length ; i++){ 
     if(oo == inputs[i]{ 
      alert('Index of triggered element is: ' + i); 
     } 
    } 
    //enter code here 
    } 
+0

감사 raam86 수정, 코드는 솔루션처럼 보인다 나는 원했다. 그냥 작은 오류가 있었는데, 나는 그것을 수정하고 지금은 크롬과 FF에서 작동합니다. 함수 detect_it (OO) { VAR 입력 = document.getElementsByName위한 ('txtfield') VAR (I = 0; i가 inputs.length <; 내가 ++) { 경우 (OO == 입력 [I]) { 경고 ('트리거 된 요소의 색인은 :'+ i); } } } /* end */ –

+0

@LudusH 잘 알고 있습니다. – raam86

1

합니다.

그러나 노드를 찾아 인덱스를 찾을 때까지 부모 노드를 계속 찾고 부모 노드의 자식을 반복 할 수 있습니다.

이 getIndex() 함수를보십시오 : http://jsfiddle.net/LkJxV/

편집 :

<script> 
var getIndex = function (node) { 
    for (var i =0;i<node.parentNode.children.length;i++) { 
     if (node.parentNode.children[i] === node) { 
      return i; 
     } 
    } 
} 
function detect_it(oo) { 
    alert('Index of triggered element is: ' + getIndex(oo)); 
} 
</script> 

이 바이올린을 참조 코드 (다시) (THX @Felix)

+0

해결책을 반영하도록 답변을 수정했습니다. 하나의 요소가 입력되고 다른 하나가 양식이므로 – raam86

+0

@ raam86이 반환되지 않습니다. – corentin

+0

시도했지만 오류가 발생했습니다. –

관련 문제