2015-04-06 109 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