2012-07-03 2 views
0

This post은 올바른 경로에 있었지만 앞으로 한 걸음 더 나아가 야합니다. 내 입력 이름에는 잠재적으로 비 순차 색인 값이 할당되어 있습니다.Javascript를 사용하여 일련의 숨겨진 입력 필드 색인을 찾는 방법

배경 : 일련의 긴 체크 박스 대신 드롭 박스에서 값을 선택하여 목록을 작성하는 루틴이 있습니다. 이렇게하면 화면의 공간을 줄일 수 있습니다. 따라서 사용자가 드롭 다운에서 값을 선택하면 스크립트는 선택 항목이 아직 존재하지 않는지 확인한 후 다시 선택하지 않습니다.

목록은 다음과 같은 모양을 생성 :

<div id="Access:search_div"> 
<ul class="options"> 
<li onclick="removeRoleOptions(this,'Access:search_div');"><input type="hidden" name="Access:search[7]" value="1" />Standard</li> 
<li onclick="removeRoleOptions(this,'Access:search_div');"><input type="hidden" name="Access:search[8]" value="1" />Premium</li> 
<li onclick="removeRoleOptions(this,'Access:search_div');"><input type="hidden" name="Access:search[10]" value="1" />Lifetime</li> 
<li onclick="removeRoleOptions(this,'Access:search_div');"><input type="hidden" name="Access:search[14]" value="1" />SysOp</li> 
</ul> 
</div> 

내가 값을 찾는 방법의 예를 많이 볼 수 있지만,이 목록에 있다면, 그것은 항상 1이 될 것이다 그래서, 그냥 부울을 무엇 이름을 검색하고 색인 값이 첨부 된 것을 확인해야합니다.

: 위의 코드에 대한 그래서, 나는 내가 지금까지 가지고있는 코드의 중요한 부분입니다 7, 8, 10, 여기

(14)에 대해 드롭 다운에서 선택한 항목의 값을 비교하려면

function addRoleOptions(select, variable, output) { 
var display=document.getElementById(output); 
var option = select.options[select.selectedIndex]; 
var ul = display.getElementsByTagName('ul')[0]; 

if (!ul) { 
    ul = document.createElement("ul"); 
    ul.setAttribute('class', 'options'); 
    display.innerHTML = ''; 
    display.appendChild(ul); 
} 

var choices = ul.getElementsByTagName('input'); 

for (var i = 0; i < choices.length; i++) { 
    if (choices[i].value == option.value) { 
     return; 
    } 
} 

option.value는 비교 대상 번호를 보유하고 있습니다.

내 질문은 어떻게 보내지는 값과 비교하기 위해 이름의 [] 안에있는 값을 파싱합니까?

답변

0

필자는 요구 사항에 대해 확실하지 않지만 regex를 사용하여 이름에서 색인을 추출해 볼 수 있습니다.

(choices[i].name).match(/[0-9]+/g)는 당신에게 []

사이의 값을 줄 것이다 당신은 당신이

0
 var s = "Access:search[6543]"; 
     var num = s.match(/\d+/) 
수행에 필요한 작업에 그 값을 사용할 수 있습니다
관련 문제