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

rfbsl7qr  于 2022-12-25  发布在  Java
关注(0)|答案(3)|浏览(120)

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

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

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

fwzugrvs1#

编辑:不管什么原因,当输入按钮被点击时,一个改变事件被调用。
解决这个问题的方法就是不要选择提交按钮。
你可以试试

$('input:text')

仅选择文本字段。
或者你可以

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

选择除提交按钮外的所有输入元素。
Read about selectors here
编辑:使用<button>不起作用。它仍然算作input字段,但它的值与按钮上显示的文本是分开的。

qni6mghb

qni6mghb2#

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

6mw9ycah

6mw9ycah3#

@马克,
你说的很对,如果我能帮上忙的话,我会编辑你的。也许很快的某一天...
@阿乔维,
提交按钮是输入,至少大部分是:

<input type="submit" />

Mark,这并不是说他们对按钮文本做了什么,而是输入,也就是按钮,通过点击它的行为被改变了。
所以他的解决方案很棒。继续

$("input:text").change

相关问题