2012-01-27 2 views
1

같은 이름을 가진 숨겨진 양식 필드 값 배열의 일부인 숨겨진 양식 필드 값을 선택하는 데 문제가 있습니다.JQuery를 사용하여 숨겨진 양식 필드 값 배열의 일부인 숨겨진 양식 필드 값을 선택하는 방법은 무엇입니까?

$('#OrderItemViewModels[2].ProductId').val()); 

와 ..

$('#OrderItemViewModels\\[2\\].ProductId').val()); 

둘의 : 나는 그것을 같은 JQuery와의 여러 가지 방법을 선택 시도

<input data-val="true" data-val-number="The field ProductId must be a number." data-val-required="The ProductId field is required." id="OrderItemViewModels_2__ProductId" name="OrderItemViewModels[2].ProductId" type="hidden" value="3" /> 

: 다음과 같은 배열의 한 요소가 어떻게 표시되는지를 보여줍니다 그것은 효과가 있었다. 나는 또한 몇 가지 다른 방법을 시도했다. 그래서 나는 경고의 값을 인쇄하기를 희망하면서 아래의 제안을 시도했다. 나는 이것들을 시도했다 :

alert('valueDirect2=' + $('#OrderItemViewModels_2__ProductId')).val(); 
alert('valueDirect1=' + $('input[name="OrderItemViewModels[2].ProductId"]')).val(); 

결과로 두 경우 모두 valueDirect2 = [Object object]가 인쇄된다. 왜? 여기서 뭐가 잘못 됐니?

나는이 값을 얻는 방법을 놓치고 있습니다. 어떤 도움이 필요합니까?

+0

아무도'OrderItemViewModels_2__ProductId' – greggreg

답변

4

다이내믹 한 변경이 필요합니까? 예 : input 필드가 선택되어 있습니까? 그렇다면 선택기 중간에 변수를 추가해야합니다. 당신은 어떻게 name 속성과 유사 당신의 선택 문자열을 포맷하고 있기 때문에

$('#OrderItemViewModels_2__ProductId').val(); 

당신의 두 샘플

작동하지 않았다, 그러나 # :이 같은 기존 코드를 수정하는 경우

, 그것은 작동합니다 접두어는 jQuery에 id 속성을 찾습니다. jQuery를에 $ 구문이 호출에 대한 바로 가기입니다 때문에 alert 예에서

$('input[name="OrderItemViewModels[2].ProductId"]').val(); 

, 당신은 [Object object]을보고있는이 같을 것이다

뿐만 아니라 이름으로 요소를 선택할 수 있습니다, jQuery 함수. 당신이 실제로하고있는 일은 다음과 같습니다.

jQuery('input[name="OrderItemViewModels[2].ProductId"]').val(); 

이것은 단순한 구식 함수 호출입니다. S은 편리한 속기입니다. 함수를 호출하고 jQuery가 평가할 선택자 인 문자열을 전달합니다.

형식이 잘못 지정 되었기 때문에 선택기가 아무 것도 반환하지 않아서 jQuery 함수 자체의 값 .val() 또는 값이 출력되지 않게되었습니다. jQuery의 작동 방식을 개념적으로 이해하기까지는 다소 혼란 스럽습니다.

그냥 당신이 선택하려는 input의 수를 포함하는 변수 주위에 함께 문자열을 스플 라이스, 당신의 선택은 동적으로 만들려면 :

$('input[name="OrderItemViewModels[' + myVariable + '].ProductId"]').val(); 

는 다음 두 가지 옵션을 모두 설명하는 jsFiddle입니다.그 중

+0

좋아의 실제 ID하여 선택되지 않으며, 그래서 나는 이름과 ID에 의해 쿼리 시도 사이의 오차를 참조하십시오. 그러나 나는 아직도 내가 어느 쪽이라도 볼 것을 예상하고있는 것을 얻지 않고있다. 그리고 네, 역동적이어야합니다 ('2'는 다른 방법으로 가져오고 이미 작동합니다). 그러나 나는 이것이 먼저 작동하도록 노력할 것이라고 생각했다. 그렇지 않다. –

+0

귀하의 질문에 답변 할 수있는 답변을 업데이트했습니다. 네가 더 있으면 알려줘. :) –

+0

나는 내 오류 조쉬를 참조하십시오. 잘못된 위치에 괄호가있었습니다. 좋은 대답. 감사. –

0
$('input[name="OrderItemViewModels['+ index +'].ProductId"]').val(); // index = 0,1,2... 

또는

$('#OrderItemViewModels_'+ index +'__ProductId').val(); // index = 0,1,2... 
관련 문제