标题几乎都说明了。重申一下,当我将监听器.on('input',...
分配给某个表单时,该事件将触发<select>
和<input>
更改,但它不会触发复选框更改。
这是我所谈论的一个小提琴:
https://jsfiddle.net/6vzftzum/
<form class='request-form'>
<input type='text'>
<select>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<label><input type="checkbox" name="not-completed" checked>Not Completed</label>
</form>
<div class='put-stuff-in-here'>
</div>
var i=0;
$(".request-form").on('input', function() {
$(".put-stuff-in-here").append(i + "<br>");
i++;
});
有没有办法让一个侦听器可以触发表单中的所有输入变化?
答案 0 :(得分:1)
您的input
活动不会触发复选框,但我们可以通过change
事件处理它。虽然我们需要分离监听器,但我们可以让它们调用一个共同的功能,这样只需要在一个地方进行任何需要进行的更改。
function changeFunction(elem) {
$(".put-stuff-in-here").append(i + "<br>");
i++;
}
$('.request-form input[type="checkbox"], .request-form select').change(function() {
changeFunction($(this));
});
$('.request-form input[type="text"]').on('input', function() {
changeFunction($(this));
});
答案 1 :(得分:0)
'input'
事件仅在文本内容更改时触发。单击复选框不会更改表单中的文本。请参阅此回答here