Javascript 为什么$.change()会在提交按钮上触发?
我有一个Javascript 为什么$.change()会在提交按钮上触发?,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我有一个$.change()事件,但当按下提交按钮时,更改事件再次触发。当一个文本被输入到一个输入文本框中时,它应该只触发一次 $('input:submit', top.document).bind('click', function (e) { alert("submitting") }); $('input').change(function (e) { alert("fire"); }); 编辑:无论出于何种原因,单击输入按钮时都会调用更改事件。(谢谢安东尼) 解决这
$.change()
事件,但当按下提交按钮时,更改事件再次触发。当一个文本被输入到一个输入文本框中时,它应该只触发一次
$('input:submit', top.document).bind('click', function (e) {
alert("submitting")
});
$('input').change(function (e) {
alert("fire");
});
编辑:无论出于何种原因,单击输入按钮时都会调用更改事件。(谢谢安东尼) 解决这个问题的方法就是不要选择submit按钮 你可以试试
$('input:text')
仅选择文本字段
或者你可以
$('input:not(:submit)')
选择除提交按钮外的所有输入元素
编辑:改用
不起作用。它仍然算作一个输入
字段,但它的值与按钮上显示的文本是分开的。编辑:无论出于何种原因,单击输入按钮时都会调用更改事件。(谢谢安东尼)
解决这个问题的方法就是不要选择submit按钮
你可以试试
$('input:text')
仅选择文本字段
或者你可以
$('input:not(:submit)')
选择除提交按钮外的所有输入元素
编辑:改用
不起作用。它仍然算作一个输入
字段,但它的值与按钮上显示的文本是分开的。$('input')。更改(函数(e){alert(“fire”)})代码>将该事件应用于所有输入元素,包括
。如果您确实希望每个文本输入元素都有一个更改事件,那么您需要`$('input[type=text]').change(function(e){alert(“fire”)};`否则,最好使用id或类。$('input').change(函数(e){alert(“fire”)})代码>将该事件应用于所有输入元素,包括
。如果您确实希望每个文本输入元素都有一个更改事件,那么您需要`$('input[type=text]').change(function(e){alert(“fire”)};`否则,最好使用id或类。@Mark
你说得对,如果我能帮忙的话,我会编辑你的。也许不久的某一天
@阿霍维
提交按钮是输入。至少其中大多数是:
<input type="submit" />
@马克
你说得对,如果我能帮忙的话,我会编辑你的。也许不久的某一天
@阿霍维
提交按钮是输入。至少其中大多数是:
<input type="submit" />
这实际上是行不通的,空格的意思是“后代”。因此,您的选择器正在查找另一个输入的后代文本输入,这不太可能工作。去掉空间,一切都好。我犹豫了。我想我以前在这方面遇到过问题,所以我很紧张,因为我认为空间会覆盖这两个方面。谢谢你的提醒。是的,但即使这样…我仍然不明白为什么它选择所有的输入。尽管我明确指定不选择:submit和only:text,但在您提供的代码中,您并没有只指定text。您可以指定在其他地方选择,但这不同。这不仅不能消除普通输入选择器中的提交,还必须记住还有复选框、重置和无线电输入。所以你每次都必须明确,这实际上是行不通的,空格的意思是“后代”。因此,您的选择器正在查找另一个输入的后代文本输入,这不太可能工作。去掉空间,一切都好。我犹豫了。我想我以前在这方面遇到过问题,所以我很紧张,因为我认为空间会覆盖这两个方面。谢谢你的提醒。是的,但即使这样…我仍然不明白为什么它选择所有的输入。尽管我明确指定不选择:submit和only:text,但在您提供的代码中,您并没有只指定text。您可以指定在其他地方选择,但这不同。这不仅不能消除普通输入选择器中的提交,还必须记住还有复选框、重置和无线电输入。所以你每次都得说得具体点。是的,这似乎不起作用。我编辑了上面的代码以提供更多信息。是的,它似乎不起作用。我编辑了上面的代码以提供更多信息。