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

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

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

212705_BZl5_1464361.jpg

代码如下:

$("#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:如图

213258_V12l_1464361.jpg

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

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

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

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

转载于:https://my.oschina.net/changelin/blog/290668

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`@keydown.native` 是 Vue.js 的一个自定义事件修饰符,用于监听键盘原生事件,而非浏览器默认的键盘事件。如果你在使用 `@keydown.native` 后发现没有反应,可能是以下几个原因导致的: 1. 绑定的元素没有获取到焦点。如果你绑定的是某个元素的键盘事件,那么必须让这个元素获得焦点,才能触发键盘事件。例如,对于一个 `div` 元素,可以设置 `tabindex` 属性来使其获得焦点,从而触发键盘事件: ```html <div tabindex="0" @keydown.native="handleKeyDown"></div> ``` 2. 绑定的键盘事件不是原生事件。`@keydown.native` 只能监听键盘原生事件,例如 `keydown`、`keyup`、`keypress` 等,而不能监听浏览器默认的键盘事件,例如 `input`、`keydown.enter` 等。如果你想监听浏览器默认的键盘事件,应该使用其他的修饰符,例如 `@keydown.enter`。 3. 绑定的事件处理函数没有正确绑定到 Vue 实例上。如果你在 Vue 组件中使用 `@keydown.native`,那么需要确保事件处理函数正确绑定到 Vue 实例的方法中。例如,如果你的事件处理函数是一个类方法,可以使用箭头函数或 `.bind()` 方法将其绑定到 Vue 实例上: ```javascript export default { methods: { handleKeyDown: (event) => { console.log(event.keyCode); }, // 或者 handleKeyDown(event) { console.log(event.keyCode); }.bind(this), }, }; ``` 如果你检查了以上几个原因,仍然无法解决问题,可以尝试使用浏览器的开发者工具,查看控制台是否有相关的错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值