03 Mar 2017 10:11 +0000
很多情况下需要向表单输入事件添加绑定, 监听的事件主要是 "input" 和 "change" 两个. 此二者在功能和行为上存在诸多不同.
辨析
"input" 事件在输入框值发生改变时触发, 比如文本 ("text") 输入框输入或删除文字, 选择 ("select") 输入框值改变等, 但要注意 "input" 事件不能监听复选框 ("checkbox") 选项变化, 要监听复选框选项变化, 要借助 "change" 事件.
"change" 事件, 如上所述, 能够监听复选框选项变化. 此外, "change" 事件亦可监听其他类型输入框输入, 但与 "input" 事件不同, "change" 事件不监听实时输入 (针对文本输入框) , 只有在输入框失去焦点时才触发, 这种行为使 "change" 事件可以实现与 "input" 事件不同的响应需求.
实例
检测字数
若一个输入框设置了字数限制. 相较于每次提交时由检查字数, 随用户输入提示字数是否超限可以提供更及时的反馈.
$("#input").on("input", function () {
// 捕捉事件并响应
});
监听复选框值变化
$("#checkbox").on("change", function () {
// 捕捉事件并响应
});
卸载提示
在表单任意值发生变化而未上传时提供卸载提示是典型的业务场景. 可以同时绑定 "input" 和 "change" 两个事件, 以检测整个表单的变化.
$("#form").on('input change', function () {
window.onbeforeunload = function () {
return "表单尚未上传, 确认关闭吗?";
}
});
Loading comments...