0

新しい GMail 電子メールの「To」フィールドでアドレスを取得する必要がある Google Chrome 拡張機能を作成しています。これは私が現在取り組んでいるものです(jQuery 2.0.2が使用されています):

$('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上記のコードで To フィールドを押すたびに、空のalert()ボックスが起動します。ただし、メッセージがアラートボックス内にあるalert()ように、任意の値を表示するように変更すると。alert('david');david

私の質問は、なぜ.val()私が押すと「To」フィールドから空の文字列が出てくるのEnterですか?

ありがとう!

4

1 に答える 1

4

Gmail の to Field はテキストエリアのようには機能しません。テキストからメールを取得し、テキストエリアの前に各メールの div を作成します。

DOM を調べて、そこで何が起こっているかを確認する必要があります。

ここにコードの関連部分があります。

<div class="vR">
  <span class="vN vQ" email="email1@example.com">
    <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="email2@example.com">
    <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(", "));
});
于 2013-07-11T02:53:16.357 に答える