input元素提示用户已输入字符
支持输入,删除,粘贴操作
当用户在页面上输入字符时,如果能将当前已输入的字符数提示给用户,会带来较好的用户体验。特别是在输入框有长度限制的时候。
之前我们的做法是捕获onkeypress、onkeyup这样的事件。通过捕获这些事件,可以在用户通过键盘输入时给予相应的提示,但如果用户通过鼠标右键菜单进行“粘贴”操作,就无法及时提示用户。
为了解决右键粘贴的问题,我们将思路转变为直接检测元素内容的变化,而不是捕获按键事件。IE下可以通过捕获 onpropertychange 事件,Fire Fox、Chrome则可以通过 addEventListener 来注册事件来实现。示例代码如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<input id="text" />
<div id="testInfo">已经输入:<span id="showMsg"></span></div>
</body>
<script>
//当状态改变的时候执行的函数
function handle()
{
document.getElementById("showMsg").innerHTML= document.getElementById("text").value.length;
}
//firefox下检测状态改变只能用oninput,且需要用addEventListener来注册事件。
if (/msie/i.test(navigator.userAgent)) //ie浏览器
{
document.getElementById("text").onpropertychange=handle
}
else
{
//非ie浏览器,比如Firefox
document.getElementById("text").addEventListener("input", handle, false);
}
</script>
</html>
上面的代码已经在 IE7、FF3.6.3、Chrome 8.0 中验证通过。
声明: 本文采用 CC BY-NC-SA 3.0 协议进行授权,转载请注明出处。