我在输入字段中添加了更改事件,以便每当用户将文本输入其中时,其他任务应该发生,它可以工作,但是当我在输入字段外单击时。我不知道它是默认行为还是我做错了什么。我尝试使用keyup
和keydown
事件,它可以正常运行。
请建议。
这是我的代码:
$("#mobile-number").on('change',function(){
// some other code
});
答案 0 :(得分:3)
元素值更改时会触发change
事件。
对于选择框,复选框和单选按钮,当用户使用鼠标进行选择时会立即触发事件,但对于其他元素类型,事件将延迟到元素失去焦点
换句话说,在输入上,change
事件在元素失去焦点时触发,而不是在您键入时触发,这是默认行为。
这就是为什么还有关键事件,在现代浏览器中,您可以通过input
事件捕获对输入的大多数更改
$("#mobile-number").on('input',function(){ ...
答案 1 :(得分:1)
是的,这是理想的行为。
更改事件是针对,,和 元素的值更改时的元素 用户。与输入事件不同,更改事件不一定 为元素值的每次更改触发。
取决于要更改的表单元素的种类和方式 用户与元素交互,更改事件以不同的方式触发 时刻:
- 激活元素(通过单击或使用键盘)和;
- 当用户明确提交更改时(例如,通过鼠标单击从下拉列表中选择一个值,通过选择一个 通过选择文件从日期选择器中选择日期 在文件选择器等等;);
- 当元素在其值更改后失去焦点但未提交时(例如,在编辑或的值之后)。
答案 2 :(得分:1)
尝试使用input
事件:
$(function() {
$("#mobile-number").on('input', function() {
$("#copy").val(this.value);
});
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type='text' id='mobile-number' />
<input type='text' id='copy' readonly/>
&#13;
答案 3 :(得分:0)
试试这个:(如果我真的了解你的问题)
jQuery(document).on('change', '#mobile-number', function() {
// some other code
});
表示类型事件:
jQuery(document).on('keyup', '#mobile-number', function() {
// some other code
});
答案 4 :(得分:0)
您应该将选择器提供给.on函数:
$(document).on('change', '#mobile-number', function() {
// some other code
});