2010-01-07 3 views
1

누군가가 CRM (Zoho)이 만든 필드의 표시를 변경하기 위해 Greasemonkey 스크립트를 만들고 있습니다. HTML. ,Javascript/jQuery를 사용하여 부적절한 id 속성을 가진 HTML 요소에 액세스하기

<input type="text" maxlength="50" style="width: 100%;" class="textField" id="property(Phone)" name="property(Phone)"/> 

의 ID 년대에 공백이 괄호가 포함

이 쉽게해야하지만, 조호 적절한 HTML을 생성하는 엉덩이에 너무 큰 고통이었다 결정, 내 생각, 그들의 HTML이 같은 것들을 포함 이는 ID 속성에서 유효하지 않으며 document.getElementById()를 사용하여 선택하거나 jQuery를 사용하여 선택하지 못하게합니다.

아무도 그 요소를 잡을 수있는 방법에 대한 아이디어가 있습니까? 분명히 부모 요소의 색인을 통해 또는 DOM을 통과하여 색인을 가져올 수 있지만 둘 다 필드의 순서가 변경되면 Greasemonkey 스크립트가 잘못된 요소를 대상으로하기 때문에 올바르게 작동하지 않습니다. .

답변

1

당신은 공간을 벗어날 수 백 슬래시 사용하여 괄호 :

0

항상 document.getElementsByTagName ('input')을 수행 한 다음 결과를 찾아보고 속성 (예 : 유형 및 이름, 클래스 ...)과 일치시킬 수 있습니다. 아니 매우 효율적하지만 난 (ID가 무효이기 때문에) 그 어떤 순서로 작동합니다 알고있는 유일한 방법 ...

var inputs = document.getElementsByTagName('input'); 
if (inputs) 
    for (var i = 0; i < inputs.length; i++) 
     if (inputs[i].type == 'text' && inputs[i].name == 'SearchValue') 
      return inputs[i]; 

내가 JQuery와 (또는 다른 좋은 프레임 워크) 확신이에 해당하는이 snippet ...

0

JQuery는 아마도 #id 구문을 사용하여 찾을 수 없지만 tagName [id = value] 구문을 사용하여 찾을 수 있습니다. 행운을 빈다. jQuery doc을 참조하십시오.

1

어떤 브라우저가요? 파이어 폭스, 당신이 GreaseMonkey에 대해 언급 한 이후로 가정합니다. 하지만 document.getElementById("property(Phone)")은 Firefox 3.5에서 정상적으로 작동하는 것 같습니다.

$("#property\\(Phone\\)") 
1

이 같은 괄호를 탈출 할 수

$('#property\\(Phone\\)').val('jQuery selected property(Phone)!'); 
$('#ab\\ cd\\ ef').val('jQuery selected ab cd ef!'); 
+0

당신은 잠시 나를 이길을,하지만 당신은에 '#'을 잊었다 셀렉터의 시작 :) – Annabelle

+0

고정 감사합니다! –