如何使用JQuery触发原始事件

时间:2013-01-08 15:46:18

标签: jquery google-chrome-extension

很抱歉我的英文不好。

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

  • 我尝试使用content_scripts API开发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事件发布评论,所以我尝试使用所有事件类型,但我的所有尝试都失败了。 我可以做什么来点击原始事件,如实际按下输入键提交评论?

2 个答案:

答案 0 :(得分:1)

您可以创建一个新功能来提交评论并在以下时间调用它:

  • 用户在textarea中按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();
         });
     });
    

答案 1 :(得分: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();
   });
 });