很抱歉我的英文不好。
您好,我在JQuery中触发自定义事件时遇到了一些问题。 我的问题是:
content_scripts
API开发Google Chrome扩展程序。我尝试使用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事件发布评论,所以我尝试使用所有事件类型,但我的所有尝试都失败了。 我可以做什么来点击原始事件,如实际按下输入键提交评论?
答案 0 :(得分:1)
您可以创建一个新功能来提交评论并在以下时间调用它:
用户点击按钮
$(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();
});
});