2013-07-10 2 views
0

새로운 Gmail 이메일의 '받는 사람'입력란에 주소를 캡처해야하는 Google 크롬 확장 프로그램을 작성하고 있습니다. 이것은 내가 현재 함께 일하고 (jQuery를 2.0.2 사용되는) 것입니다 :Chrome 확장 프로그램에서 Gmail의 '받는 사람'입력란을 가져옵니다.

$('textarea[name="to"]').bind("enterKey",function(e){ 
     alert($('textarea[name="to"]').val()); // this is definitely the "To" field 
}); 
$('textarea').keyup(function(e){ 
     if(e.keyCode == 13) { 
     $(this).trigger("enterKey"); 
} 
}); 

때마다 나는 위의 코드, 빈 alert() 상자 화재로 사람 필드에 Enter를 누릅니다. 그러나 alert()을 임의 값을 표시하도록 변경하면 alert('david');과 같은 메시지 david이 경고 상자 안에 있습니다.

제 질문은 Enter을 누르면 "받는 사람"필드의 .val()에서 오는 빈 문자열이 나오는 이유는 무엇입니까?

감사합니다.

+1

를 이메일을 얻을 수있는'e.keyCode' - jQuery를은'e.which'에 키 코드를 정상화 ... 그것을 사용하십시오. 또한 DOM에 복수의'textarea [name = "~"]'요소가있을 수 있으므로'$ (this) .val()'을 사용하십시오 – Ian

답변

4

Gmail의 텍스트 입력란은 텍스트 영역처럼 작동하지 않으며 텍스트에서 이메일을 가져 와서 텍스트 영역 앞의 각 이메일에 대해 div를 만듭니다.

DOM을 검사하여 진행 상황을 확인해야합니다.

다음은 관련 코드 부분입니다.

<div class="vR"> 
    <span class="vN vQ" email="[email protected]"> 
    <div class="vT">email1</div> 
    <div class="vM"></div> 
    </span> 
    <input name="to" type="hidden" value="email1"> 
</div> 
<div class="vR"> 
    <span class="vN vQ" email="[email protected]"> 
    <div class="vT">email2</div> 
    <div class="vM"></div> 
    </span> 
    <input name="to" type="hidden" value="email2"> 
</div> 
<textarea rows="1" id=":2y" class="vO" name="to" spellcheck="false" autocomplete="false" tabindex="1" dir="ltr" aria-haspopup="true" style="width: 950px;"></textarea> 

그래서 사용하지 않는,이 같은 방법으로

$('textarea[name="to"]').bind("enterKey", function(e){ 
    var emails = []; 
    $(this).siblings("div.vR").find("span.vN").each(function() { 
     emails.push($(this).attr("email")); 
    }) 
    alert(emails.join(", ")); 
}); 
+2

1 년이 지났으며 아무도 당신이' 경고 (emails.join (",");': D –

관련 문제