이름 속성에 대괄호가있는 입력을위한 jQuery 선택기


179

name 속성에 대괄호가있는이 요소를 선택하려고합니다.

<input type="text" name="inputName[]" value="someValue">

나는 이것을 시도했다 (작동하지 않는다) :

$('input[inputName[]=someValue]')

그리고 이것도 마찬가지입니다.

$('input[inputName&#91;&#93;=someValue]')

아니면 이거:

$('input["inputName[]"=someValue]')

편집 : 일부 사람들이 지적했듯이 $('input[inputName=someValue]')결코 작동하지 않습니다. 내가하려는 것은 : $('input[name=inputName][value=someValue]'). (그러나 []이름 속성에 있음).

답변:


262

jQuery를 문서 ,이 시도 :

$('input[inputName\\[\\]=someValue]')

[편집] 그러나 선택기에 맞는 구문인지 확실하지 않습니다. 당신은 아마 원할 것입니다 :

$('input[name="inputName[]"][value="someValue"]')

32
잘 잡았습니다. 두 개의 백 슬래시가 필요한 이유는 단일 백 슬래시가 JavaScript 문자열 이스케이프 문자로 해석되기 때문에 선택자에게 이스케이프 문자를 제공하는 리터럴 백 슬래시를 지정하려면 두 개가 필요하기 때문입니다. 탈출.
Peter

고마워 정규 표현식을 사용하는 것입니다. 이것은 선호하는보기 프레임 워크 내에서 배열 또는 목록에 양식 데이터를 직접 제출할 때 매우 유용합니다. 또한 여러 기본 키 요소가있는 객체를 삭제하는 방법에 대한 질문에 답변했습니다. ;)
Luiz Feijão Veronesi

79

백 슬래시를 사용하여 jQuery 선택기에서 "재미있는"문자를 인용 할 수 있습니다.

$('#input\\[23\\]')

속성 값의 경우 따옴표를 사용할 수 있습니다.

$('input[name="weirdName[23]"]')

자, 나는 당신의 모범에 약간 혼란스러워합니다. HTML은 정확히 어떻게 생겼습니까? 특히 "inputName"이라는 문자열이 어디에 표시됩니까?

고정 된보고 편집 ; 감사합니다 @ Dancrumb


1
나는 (우연히 선택 태그)를 선택 할 수없는 생각 <select name="foo[bar]">하여 $('select[name=foo\\[bar\\]]')내가 그러나 생각 하여 그렇게 할 수 $('select[name="foo[bar]"]), 당신이 두 번째 제안.
Frank Nocke

53

속성 선택기 구문은 [name=value]where name속성 이름이며 value속성 값입니다.

따라서 input속성 name값이있는 모든 요소 를 선택하려면 다음을 수행하십시오 inputName[].

$('input[name="inputName[]"]')

그리고 두 가지 속성 (여기서 : namevalue) 을 확인하려면 다음을 수행하십시오 .

$('input[name="inputName[]"][value=someValue]')

7

선택자가 변수에 포함 된 경우 아래 코드가 도움이 될 수 있습니다.

selector_name = $this.attr('name');
//selector_name = users[0][first:name]

escaped_selector_name = selector_name.replace(/(:|\.|\[|\])/g,'\\$1');
//escaped_selector_name = users\\[0\\]\\[first\\:name\\]

이 경우 모든 특수 문자 앞에 이중 백 슬래시를 붙입니다.


1
selector.replace (/ ([|]) / g, '\\\\ $ 1'); 이스케이프 된 슬래시를 추가하고 하나의 이스케이프 슬래시가 아닌 두 개의 슬래시를 생성하기 때문에 나를 위해 조금 더 잘 작동했습니다.
Fydo

당신은 또한뿐만 아니라 콜론, 마침표 등 일부 다른 문자를 이스케이프 할 필요가 있음을 기억 @Fydo
에릭 Kigathi

1

다른 따옴표로 구분하십시오.

<input name="myName[1][data]" value="myValue">

jQuery :

var value = $('input[name="myName[1][data]"]').val();
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.