2013-07-10 57 views
0

我正在編寫一個Google Chrome擴展程序,需要在新的GMail電子郵件的「收件人」字段中捕獲地址。這是我目前正與合作(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"); 
} 
}); 

每次我按在Enter以上面的代碼中,一個空alert()箱火災現場。但是,如果我將alert()更改爲顯示任意值,例如alert('david');,則消息david位於警報框內。

我的問題是,當我按Enter時,爲什麼有一個空字符串脫離「收件人」字段的.val()

謝謝!

+1

順便說一句,不要使用'e.keyCode' - jQuery的正常化的關鍵代碼到'e.which' ...使用它。此外,只需使用'$(this).val()',因爲在DOM中可能會有多個'textarea [name =「to」]'元素 – Ian

回答

4

Gmail的字段不像textarea那樣工作,它會從文本中獲取電子郵件,並在文本區域之前爲每封電子郵件創建一個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

一年過去了,沒有人注意到' alert(emails.join(「,」);':D –

相關問題