asp.net textbox javascript实现enter与ctrl+enter互换 文本框发送消息与换行(类似于QQ)
更新时间:2021年9月22日 10:18 点击:1570
1、也许讲解有点初级,希望高手不要“喷”我,因为我知道并不是每一个人都是高手,我也怕高手们说我装13;
2、如有什么不对的地方,还希望大家指出,一定虚心学习,如果有更好的办法请告诉我一声哦;
3、本文属于作者原创,尊重他人劳动成果,转载请注明作者,谢谢。
下面开讲:
如题,这个功能也困扰了我一两天事件了,我也上网找了很多资料,但是网上大部分的说法都差不多,问题始终还是没解决,于是乎我开始找是问题的根源,我开始用的是文本框的onkeydown事件,分别写了两个js函数,如下:
//enter发送
function IsEnter(evt)
{
if(window.event.keyCode ==13)
{
send();
return false;
}
}
//ctrl+enter发送
function IsEnterAndCtrl()
{
if(window.event.keyCode ==13 && window.event.ctrlKey)
{
send();
return false;
}
}
然后我就用文本框的onkeydown事件来调用这两个函数,可以一直效果不出来,我就调试,发现event永远都是undefined,我无语了,然后我就换方法了,我把onkeydown函数里面加了一个event参数,在IsEnter(evt)里面也定义了一下var obj = window.event ? evt.keyCode : evt.which;//window.event是针对IE,evt.keyCode是针对FF,这样这个问题就解决了,就不会出现undefined错误了。
接下来问题又来了,我发现onkeydown事件只要你按键盘上的任意键就会触发这个事件,那么就无法实现ctrl和enter同时按了,又是一个纠结的问题啊,还有我们有onkeydown事件就有onkeyup事件,接下来我就把onkeydown事件换成了onkeyup事件了,这样问题就解决了。
好了,问题是越解决越少了,下面要做到是如何做到enter与ctrl+enter切换实现是换行还是发送消息?为了兼容性,我又定义了一个变量 var e = evt || window.event;我就是通过obj与e来实现换行与发送切换的,详细js代码如下:
//enter or ctrl+enter发送
function IsEnter(evt)
{
var obj = window.event ? evt.keyCode : evt.which;
var e = evt || window.event;
var type = document.getElementById("sendtype");
var txt = document.getElementById("txtcontent");
if(type.innerHTML=="[Enter发送消息]")
{
if(obj ==13 && !(e.ctrlKey))
{
send();
e.returnValue = false;
txt.value="";
return false;
}
if(e.ctrlKey && e.keyCode==13)
{
txt.value +="\n";
}
}
else
{
if(e.ctrlKey && e.keyCode==13)
{
send();
return false;
}
}
}
注意:以上代码我都已经在IE6、IE8、FF里测试过,绝对有用,由于按enter发送消息的时候会与换行冲突,所以我用e.returnValue = false;txt.value="";不知道有没有更好的方法?
2、如有什么不对的地方,还希望大家指出,一定虚心学习,如果有更好的办法请告诉我一声哦;
3、本文属于作者原创,尊重他人劳动成果,转载请注明作者,谢谢。
下面开讲:
如题,这个功能也困扰了我一两天事件了,我也上网找了很多资料,但是网上大部分的说法都差不多,问题始终还是没解决,于是乎我开始找是问题的根源,我开始用的是文本框的onkeydown事件,分别写了两个js函数,如下:
复制代码 代码如下:
//enter发送
function IsEnter(evt)
{
if(window.event.keyCode ==13)
{
send();
return false;
}
}
//ctrl+enter发送
function IsEnterAndCtrl()
{
if(window.event.keyCode ==13 && window.event.ctrlKey)
{
send();
return false;
}
}
然后我就用文本框的onkeydown事件来调用这两个函数,可以一直效果不出来,我就调试,发现event永远都是undefined,我无语了,然后我就换方法了,我把onkeydown函数里面加了一个event参数,在IsEnter(evt)里面也定义了一下var obj = window.event ? evt.keyCode : evt.which;//window.event是针对IE,evt.keyCode是针对FF,这样这个问题就解决了,就不会出现undefined错误了。
接下来问题又来了,我发现onkeydown事件只要你按键盘上的任意键就会触发这个事件,那么就无法实现ctrl和enter同时按了,又是一个纠结的问题啊,还有我们有onkeydown事件就有onkeyup事件,接下来我就把onkeydown事件换成了onkeyup事件了,这样问题就解决了。
好了,问题是越解决越少了,下面要做到是如何做到enter与ctrl+enter切换实现是换行还是发送消息?为了兼容性,我又定义了一个变量 var e = evt || window.event;我就是通过obj与e来实现换行与发送切换的,详细js代码如下:
复制代码 代码如下:
//enter or ctrl+enter发送
function IsEnter(evt)
{
var obj = window.event ? evt.keyCode : evt.which;
var e = evt || window.event;
var type = document.getElementById("sendtype");
var txt = document.getElementById("txtcontent");
if(type.innerHTML=="[Enter发送消息]")
{
if(obj ==13 && !(e.ctrlKey))
{
send();
e.returnValue = false;
txt.value="";
return false;
}
if(e.ctrlKey && e.keyCode==13)
{
txt.value +="\n";
}
}
else
{
if(e.ctrlKey && e.keyCode==13)
{
send();
return false;
}
}
}
注意:以上代码我都已经在IE6、IE8、FF里测试过,绝对有用,由于按enter发送消息的时候会与换行冲突,所以我用e.returnValue = false;txt.value="";不知道有没有更好的方法?
相关文章
- 这篇文章主要介绍了C# 键盘Enter键取代Tab键实现代码,有需要的朋友可以参考一下...2020-06-25
php将第三方应用会员表导入到ucenter memberfields表
代码如下 复制代码 mysql教程_connect('localhost','0731-cn','0731licheng1') or die('sever '); mysql_select_db('0731-cn') or die('dat...2016-11-25asp.net实现取消页面表单内文本输入框Enter响应的方法
这篇文章主要介绍了asp.net实现取消页面表单内文本输入框Enter响应的方法,结合实例形式分析了asp.net文本框Enter响应的原理与取消Enter响应的相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2021-09-22- 这篇文章主要介绍了ASP.NET基于Ajax的Enter键提交,结合实例形式分析了asp.net基于ajax响应Enter键的提交方法与相关问题解决技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2021-09-22
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
这篇文章主要介绍了快速移动鼠标所触发的问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave),非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-09-01解决UCenter info: Can not connect to MySQL server的方法
今天把网站换了台服务器结果发现UCenter打开时提示UCenter info: Can not connect to MySQL server 了,但通信是没有问题,只是注册时提示错误,这个不用说就是数据库配置...2016-11-25- 一个div拖动互换位置的demo,还有很大优化的空间,利用dom元素的dragstart/ondragover/ondrop事件完成,感兴趣的可以了解一下...2021-06-28
- 这篇文章主要介绍了Docker 使用nsenter工具进入容器的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-22
ucenter整理tipask问答系统与discuz单项同步问题解决方法
UCenter是Comsenz旗下各个产品之间信息直接传递的一个桥梁,通过UCenter 站长可以无缝整合Comsenz系列产品,实现用户的一站式登录以及社区其他数据的交互,但很多站长在...2016-11-25- 下面小编就为大家带来一篇js enter键激发事件实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-08-24
- Discuz Ucenter整合自己应用程序代码 安装(这个不用说详了吧) 安装官方安装后,会自动把ucenter和dz打通的,如图 下载 (21.53 KB) 2009-3-20 19:14 3、添加...2016-09-20
- 这篇文章主要为大家详细介绍了C语言实现文本文件和二进制文件格式互换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
ASP.NET2.0使用Enter Key作为默认提交问题分析(附源码)
这篇文章主要介绍了ASP.NET2.0使用Enter Key作为默认提交,结合实例形式分析了ASP.NET2.0使用Enter Key默认提交的注意事项与相关实现技巧,并附上源码供读者参考,具有一定参考借鉴价值,需要的朋友可以参考下...2021-09-22asp.net textbox javascript实现enter与ctrl+enter互换 文本框发送消息与换行(类似于QQ)
今天与大家分享一下 asp.net textbox javascript实现enter与ctrl+enter互换 文本框发送消息与换行(类似于QQ),这个功能到底怎么实现?首先声明以下几点...2021-09-22- 这篇文章主要介绍了R语言 实现将1对多数据与1对1数据互换的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- ucenter我想有不少朋友会用到了,就是一个会员同步功能了,我们经常会把几个系统或不同论坛整合起来,下面我来给各位同学介绍一下。 UCenter同步流程: 前提是需要在Ucen...2016-11-25
- Discuz! 与 UCenter 连接的一些信息,本设置在论坛安装时自动生成,一般情况下请不要修改,修改前请备份 config.inc.php 文件,以防止修改错误导致论坛无法运行。 设置的位置...2016-09-20
- 这篇文章主要介绍了WinForm中变Enter键为Tab键实现焦点转移的方法,主要通过一个ControlTools类来实现该功能,需要的朋友可以参考下...2020-06-25
- 导入数据到ucenter与论坛,或其它 cms用户同小只要操作ucenter的两张表就行了,uc_members,uc_memberfields哦,涉及到更新的字段也不多,所以总体来讲把它系统的数据导入到uc...2016-11-25
- 本文章来给各位同学介绍关于ucenter整合,通信失败,调试测试排查方法,希望此方法对各位同学会有所帮助哦。 失败是因为你的应用程序的api/uc.php中可能有错误.比如u...2016-11-25