为什么$ .change()会在提交按钮上触发?

时间:2009-10-11 00:53:48

标签: javascript jquery javascript-events

我有一个$.change()事件,但是当按下提交按钮时,更改事件会再次触发。当文本输入到输入文本框时,它只会触发一次。

$('input:submit', top.document).bind('click', function (e) {
    alert("submitting")
});

$('input').change(function (e) {
    alert("fire");
});

3 个答案:

答案 0 :(得分:4)

编辑:无论出于何种原因,单击输入按钮时都会调用更改事件。 (谢谢安东尼)

解决此问题的方法是不要选择提交按钮。

你可以尝试

$('input:text')

仅选择文字字段。

或者你可以做到

$('input:not(:submit)')

选择除提交按钮以外的所有输入元素。

Read about selectors here

修改:改为使用<button>无效。它仍然计为input字段,但它的值与按钮​​上显示的文本是分开的。

答案 1 :(得分:0)

$('input').change(function(e){ alert("fire") });将该事件应用于所有输入元素,包括<input type="submit".../>。如果你真的希望每个单个文本输入元素都有一个更改事件,你需要``$('input [type = text]')。change(function(e){alert(“fire”)});`否则,最好使用id或class。

答案 2 :(得分:0)

@马克,

如果我能提供帮助的话,你就可以了。我会编辑你。也许有一天很快......

@ajowi,

提交按钮是输入。至少大多数是:

  <input type="submit" />

所以Mark,并不是他们用按钮文本做任何事情,而是通过点击它来改变输入(即按钮)。

所以他的解决方案很棒。跟着

  $("input:text").change