关于keydown与keyup所犯过的一些小错误

昨天在写界面的时候,想实现一个功能,就是在文本框输入时,自动计算字数:

一开始,我的想法是这样的,给文本框添加个事件keydown,当点击键盘是,自动就算文本框里面字符的长度,这时候就出现了一个问题,当我按下键盘时,计算得是我按之前的字符,如图:

代码如下:

$("#key_sen").keydown(function(event){
				       var keysenLen = $("#key_sen").val().length ;
				       if ($("#key_sen").val()){
				      $("#zisu").text("(共" + keysenLen + "个字)");
				      } else {
				      	$("#zisu").text("");
				      }


接着我就是是的在 计算字符的时候,直接加一:

 var keysenLen = $("#key_sen").val().length + 1;

这时候,同时出现个问题,就是当你删除的时候,字符长度还是之前的,我按下1234567,然后删除7,显示长度为8:如图

后来想想,key有两个事件,一个是keydown,一个是keyup,keydown,是在你输入显示在屏幕之前就发生的了,keyup是输入显示后才发生,果然换成keyup ,就没有出现什么毛病。

当然keyup,有个用处,就是限定你输入,譬如,如果之规定用户输入数字,那可以这么写:

$("#key_sen").keydown(function(event){
				       if (event.keyCode > 105 || event.keyCode < 97){
				       	return false
				       }
					});

这时候,你输入除数字外的键,直接被锁定,不会显示。

你可能感兴趣的:(关于keydown与keyup所犯过的一些小错误)