2010-03-11 114 views
1

我遇到了一個簡單表單的問題,我試圖在某人鍵入內容時觸發ajax請求。調試完成後,當事件被解除時,我會留下警報,但它會顯示兩次,而與瀏覽器無關。 (忽略輸入標籤中的'rel'屬性,除非你認爲它的rel屬性導致問題)。jquery事件無端觸發兩次

<form class="formBig" name="formRegister" id="formRegister" method="post" action=""> 
    <label class="label" id="locationLabel" for="location">Location</label> 
    <input class="input" name="location" id="location" type="text" rel="locationLabel" value="" /> 
</form> 

<script type="text/javascript"> 
$("#location").click(function() { 
    alert($(this).attr('id')); 
}); 
</script> 
+0

什麼是您的jQuery版本?你能發佈你的整個HTML和JS代碼嗎? – Crozin 2010-03-11 07:25:58

+0

這段代碼沒問題。這是另一回事,你有沒有兩次包括JavaScript文件? – Anurag 2010-03-11 07:31:04

回答

1

我最終搞清楚了,這是因爲(對於一些未知的原因),我所包括的jquery被放在了表單之後。

但是,如果我將它包含在document.ready中,它工作正常。我認爲這與DOM有關。我不知道,當涉及到jquery時,我仍然很滿意。

準備好的文檔通過腳本包含在head-tags中調用。

+0

可能發生的另一種方式是,如果您綁定同一元素上的鍵和點擊事件。按下回車鍵將導致點擊事件觸發聚焦元素 – Jake 2012-10-08 01:03:17

3

您將單擊事件處理程序綁定到文本輸入字段,這意味着它將在您單擊時調用,而不是在鍵入時調用。嘗試使用keyup事件。

+0

很好,趕上! +1 – 2010-03-11 07:28:27

+5

對不起 - 我好奇 - 這是怎麼解釋點擊被解僱兩次? – 2010-03-11 07:31:31

+0

第一次點擊輸入以輸入警報顯示,然後我不知道用戶正在做什麼,但可能會關閉警報並再次單擊輸入以輸入第二個警報顯示等等。 – 2010-03-11 07:33:18

0

基本上,它會觸發兩次,因爲有一個標籤與該事件關聯,這將導致事件在輸入上觸發兩次,在關聯標籤上觸發另一次。