2015-04-06 83 views
1

我想提交一个字段与jquery,通常在页面中你会点击一个提交按钮或按下输入字段中。 我在铬脚本中这样做。 现在,如果我输入:jquery,触发器点击或输入

$('#myButton').click() 

在控制台中,这实际上工作正常,但是当我从我的脚本函数中调用相同的代码,这是行不通的。 我也试过用这个:

var e = jQuery.Event("keydown"); 
e.which = 50; 
e.keyCode = 50; 
$("#myButotn").trigger(e); 

但还是没有结果。

具体而言,那我愿意按一下按钮有一个onClick =“submitFunction()”

+0

创建小提琴,因为$(“#为myButton”)点击()ahve工作,我认为你的麻烦不在于。 case – Legendary

+0

和顺便说一句 - 你在$(“#myButotn”)中有拼写错误。 – Legendary

+0

我知道这很奇怪,但它不这样工作.. – thestral

回答

2

这里是一个更好的方法来触发按键点击。

$(window).keydown(function (e) { 
    if (e.which === 50) { 
     $("#myButton").click();  
    } 
}); 

演示:http://jsfiddle.net/bc7r3vq1/1/

顺便说一句,键码50是数字2

+0

我无法调用函数,或者至少我不知道如何,因为函数是进入js页面,我的脚本在Chrome扩展 – thestral

+0

没问题!请尝试更新的代码和演示 – Chan

+0

我试过了,它不工作..但无论如何,我认为你的功能按下按钮时,我按下Enter,(或在这种情况下2) – thestral

-1

我相信您的问题来自于浏览器的政策防止您的代码伪装用户操作。 Chrome只允许你伪造用户动作,如果它直接从另一个用户动作处理程序调用,如实际用户点击keydown。从点击处理程序中尝试您的代码,并且如果因为此策略块而发挥作用。

+0

这里不是问题。这只是jQuery在内容脚本中复制的问题,不会触发页面的jQuery副本中的事件。这就是它从控制台运行的原因。 – Xan

+0

我们之前从Chrome扩展内容脚本完成此操作,伪造的事件在页面中被触发并由原始页面代码处理。但仅限于用户操作。 –

0

现在,我找到了一个解决方案,但我不知道哪一个是问题。所有的 首先,我开始使用tampermonkeys,从那里我用

$('#textField').submit(); 

它工作得很好。

我要检查现在是否必须使用这种方法,或者如果它只是与我的扩展相关的东西。

编辑:这只能如果我使用tampermonkeys,因为他们Saied如何..

+0

Tampermonkey本质上是在页面的上下文中执行脚本,这就是它工作的原因。 – Xan

+0

@Xan是的,你是对的,我也试过。现在,尽管我使用Tampermonkey对其进行了修复,但如果将来我会做一个扩展,我愿意将其放入商店,那么我该如何解决这个问题? – thestral

+0

你工作的页面是否保证有自己的jQuery?你只能使用特定的页面,对吧? – Xan