2013-08-06 2 views
2

저는 JQuery와 관련하여 매우 신물이며,이를 사용하는 방법을 배우려는 의도에서 벗어났습니다.JQuery로 HTML 입력 배열 채우기

<input name="Name[]"> 

내가 성공적으로의 변수 번호를 복제 JQuery와 설정 및 제출 작품 완벽 한 :

나는 내가 다음과 같은 일련의 입력이있는 양식을 정의했습니다. 이것을 PHP에 제출하면 내가 기대하는 게시물 데이터를 얻습니다.

["Name"]=> array(6) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" [5]=> string(0) "" } 

나는,하지만 내 PHP에 의해 반환 된 JSON 데이터와 이러한 형태의 요소를 채우기 위해 시도 실행 해요 문제. 내가 사용하는 형태로 이러한 요소의 값을 설정하려고 할 때 :

key = Name[0]

(예를 들어) 나는 매우 운이 에러하지 않은

$('[name='+key+']', frm).val(value); 

:

Uncaught Error: Syntax error, unrecognized expression: [name=Name[0]] 

분명히 거기에 괄호가 싫은가요? 이 방식으로 요소에 액세스하는 방법이 있습니까?

답변

0

그냥 단지 제안으로 내 대답을보십시오.
당신은

예를 값을

$('[name="Name[]"]', frm).eq(key).val(value); 

또는 키의 인덱스/총수이다

$('[name="Name[]"]:eq('+key+')', frm).val(value); 

을 설정 eq 함수 입력의 인덱스/위치를 사용하여 배열에 입력 (ie: 0, 1, 2, ....)
자세히보기 http://api.jquery.com/eq/

+0

응답 해 주셔서 감사합니다 그것이 내가 필요한 것을 정확히 시간을내어 주셔서 감사합니다! – James

1

[]이중 백 슬래시 //과 함께 작동시켜야 작동합니다.

$('input[name="Name\\[0\\]"]') 

key= key.replace(/\[/g, "\\\\["); 
key= key.replace(/\]/g, "\\\\]"); 

$('[name="'+key+'"]', frm).val(value); 
+0

나는 일이를 가져올 수 없습니다,하지만 난 당신이 응답 : – James

0

JavaScript의 요소 이름은 Name[]이므로 jQuery도 마찬가지입니다. 이름을 인덱싱하는 것은 PHP에만 필요합니다. jQuery는 []을 사용하지 않은 것처럼 컬렉션을 반환하고 .eq() 메서드를 사용하여 액세스 할 수있는 각 jQuery 객체를 반환합니다.

<input name="Name[]" /> 
<input name="Name[]" /> 

var jsonResp = ["hello", "world"]; 

$.each(jsonResp, function(idx, val) { 
    $('[name = "Name[]"]').eq(idx).val(val); 
}); 

JSFiddle Demo

+0

고마워요! 이것은 내가 필요한 것을 정확히 이끌어 냈습니다. – James

+0

분명히 나는 ​​두 가지 대답을 받아 들일 수 없다 ... 둘 다 자리를 잡았음에도 불구하고 누가 먼저 대답했는지 확신 할 수 없다. – James

+0

@James, 괜찮습니다. 나는 당신이 관심을 돌봐 주셔서 감사합니다. :) –