2010-03-11 162 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

基本上,它会触发两次,因为有一个标签与该事件关联,这将导致事件在输入上触发两次,在关联标签上触发另一次。