JS阻止用户默认事件的发生

解决即时聊天系统中回车事件显示问题的代码实现
本文介绍了在即时聊天系统中,如何通过修改代码阻止用户输入时回车事件在文本框中显示,同时提供了阻止默认事件激发的函数实现,包括事件处理函数toMysend和辅助函数stopDefaultKey。

在做即时聊天系统的时候碰见了这么一个问题:

由于监控了用户回车发送消息的功能,对用户的信息有个校验,但是校验后回车会展现在文本框中,一开始的想法是怎么在回车写到文本框后去除这个效果,发现没什么好办法,在网上查了下,发现既然去除不了这个效果,那么可以阻止这个回车事件的发生。

代码如下:

点击回车发送消息的方法:

function toMysend(){
	var event = arguments.callee.caller.arguments[0]||window.event;//消除浏览器差异  
    if (event.keyCode == 13){
    	mysend();
    	stopDefaultKey(event);//屏蔽enter对系统作用。按后增加\r\n等换行
    }  
}

/**
 * @Title: stopDefaultKey
 * @Description: TODO(阻止默认事件的激发)
 * @param
 * @return 无
 * @throws 无
 */
function stopDefaultKey(e) {
    if (e && e.preventDefault) {//如果是FF下执行这个
       e.preventDefault();
   }else{
       window.event.returnValue = false;//如果是IE下执行这个
   }
   return false;
}




在前端开发中,使用 `preventDefault()` 方法可以阻止某些浏览器默认行为,从而实现更灵活的交互控制。常见的默认事件类型包括: - **表单提交**:当用户点击 `<form>` 中的提交按钮时,浏览器默认会刷新页面以提交表单数据。通过调用 `event.preventDefault()`,可以阻止页面刷新,从而使用 JavaScript 实现异步提交逻辑。 ```javascript document.querySelector('form').addEventListener('submit', function(event) { event.preventDefault(); console.log('表单提交被阻止'); }); ``` - **链接跳转**:点击 `<a>` 标签时,浏览器会跳转到 `href` 指定的 URL。在某些场景下(如动态加载内容或阻止未授权访问),可以使用 `preventDefault()` 来阻止跳转行为。 ```javascript document.querySelector('a').addEventListener('click', function(event) { event.preventDefault(); console.log('链接跳转被阻止'); }); ``` 在 Vue 中,可以直接使用 `.prevent` 修饰符实现相同功能,例如: ```vue <a @click.prevent="handleClick" href="https://example.com">点击</a> ``` - **拖放操作**:当用户在网页上拖动文件时,浏览器可能会自动打开文件或执行其他操作。通过 `preventDefault()` 可以阻止这些行为,以便自定义拖放逻辑。 ```javascript document.addEventListener('dragover', function(event) { event.preventDefault(); // 允许文件拖放到页面上 }); ``` - **右键菜单弹出**:默认情况下,点击鼠标右键会弹出浏览器上下文菜单。通过 `preventDefault()` 可以阻止该行为,实现自定义右键菜单。 ```javascript document.addEventListener('contextmenu', function(event) { event.preventDefault(); console.log('右键菜单被阻止'); }); ``` - **输入框默认行为**:在某些输入操作中,可能需要阻止浏览器的默认输入行为,例如在输入框中按下回车键时,浏览器可能会提交表单,使用 `preventDefault()` 可以阻止这种行为。 ```javascript document.querySelector('input').addEventListener('keydown', function(event) { if (event.key === 'Enter') { event.preventDefault(); console.log('回车键行为被阻止'); } }); ``` 这些默认行为的阻止方式在现代前端框架中都有相应的封装,例如 Vue 提供了 `.prevent` 修饰符,React 则可以通过事件对象直接调用 `preventDefault()` 方法[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值