2011-10-21 227 views
1

我在實現我的jquery插件時遇到了一些問題。 我需要一個插件,它向我展示了一些元素(彈出)並隱藏它,當我點擊這個元素的邊界。檢測瀏覽器autoclick

我實現了這個插件。但我在彈出式窗體中遇到問題。當我計算單擊元素的座標時,我使用pageXpageY屬性。

但是當我嘗試使用ENTER鍵提交表單時,這是一些有趣的事情。當我按下ENTER鍵時觸發'點擊'事件提交按鈕,但這個按鈕的pageXpageY等於0.在event.target我看到我的按鈕。

當我點擊提交按鈕我自己 - 一切都很好。

問題:如何檢測誰點擊了此按鈕?用戶還是瀏覽器? (沒有任何尖峯像檢測輸入鍵上的輸入等)

其他:你可以看到here事件是不同的(當點擊提交併按ENTER鍵)。但差異是如此之小......當我們通過ENTER提交表單時,我只看到'detail'屬性設置爲0。 詳細屬性是鼠標事件元素的點擊量。

檢測提交的唯一方法嗎?這是對的嗎?

+1

也許你應該使用'.submit()'而不是'。點擊()'? –

+0

什麼是「尖峯」?瀏覽器如何點擊按鈕? – davin

回答

2

如何測試pageX == 0 AND pageY == 0

甚至更​​好,假設它是一種形式(它暗示自你的帖子),爲什麼不使用.submit()而不是.click()

+0

這是我想到的秒殺:)是否確認信息瀏覽器點擊按鈕並設置頁面X和頁面Y等於0?瀏覽器是否默認? – ValeriiVasin

+1

什麼是「秒殺」? – JJJ

+0

@InviS nope,但這是[TIAS](http://www.urbandictionary.com/define.php?term=TIAS)區域。儘管如此,你應該真的使用'.submit()'。 –

3

如果您將點擊處理程序綁定到點擊事件,然後以編程方式以及用戶單擊並想要區分處理程序中的兩個事件來調用點擊,則可以檢查設置的eventObject.originalEvent在用戶點擊但不是.click()調用。

例子:

$('#el').click(function(evt){ if(evt.originalEvent){ //user click } else { // .click() call } });

+0

Nice appr oach。我不知道。但在我的情況下,這不是一個決定;( – ValeriiVasin