3

很抱歉我的英语不好。

您好,我在 JQuery 中触发自定义事件时遇到了一些问题。我的问题是:

  • 我尝试使用content_scriptsAPI 开发 Google chrome 扩展。
  • 如果我在 textArea 上按 Enter 键,我的目标网站将发布评论。
  • 我需要开发一个按钮,如果我点击它会触发相同的事件。

我尝试使用http://jsfiddle.net/编辑器来模拟同样的事情,如下所示:

         $(document).ready(function(){
// this what the site do when press enter key on textarea , the submit form with ajax to publish a comment.
          $("textarea").bind("keydown",function(e){
            if(e.which == 13){
              alert("enter pressed");
            }
          });
    // this what i need to do, firing the same event when i click on my button which i added by my extension.
          $("button").click(function(){
            var e = $.Event("keydown");
            e.which = 13;
            $("textarea").trigger(e);
          });
        });

上面的代码运行没有任何问题,但是当在目标网站上应用这个模拟时没有任何动作发生。我想如果网站使用 keydown、keyup 或 keypress 事件来发布评论,所以我尝试使用所有事件类型,但我所有的尝试都失败了。我能做些什么来触发相同的原始事件,例如实际按下回车键提交评论?

4

2 回答 2

1

您可以创建一个新函数来提交您的评论并在以下情况下调用它:

  • 用户在文本区域中按 ENTER
  • 用户点击按钮

     $(document).ready(function(){
    
         function submitComment()
         {
             //Do what you want to submit the textarea text
             var comment = $("textarea").html();
         }
    
         $("textarea").bind("keydown",function(e){
            if(e.which == 13){
               submitComment();
            }
         });
    
         $("button").click(function(){
            submitComment();
         });
     });
    
于 2013-01-08T15:50:49.847 回答
0

为什么不尝试分离你的逻辑?这不是经过测试的代码,因此您可能不得不使用它,但是这种通用样式将起作用并完成您似乎正在尝试做的事情。

function myFunction()
{

    alert("enter pressed");
}

 $(document).ready(function(){
// this what the site do when press enter key on textarea , the submit form with ajax to publish a comment.
          $("textarea").bind("keydown",function(e){
             if(eventArg.which == 13){
                    myFunction();

              }
          });


    // this what i need to do, firing the same event when i click on my button which i added by my extension.
 $("button").click(function(){
         myFunction();
   });
 });
于 2013-01-08T15:55:22.960 回答