asp.net textbox javascript實(shí)現(xiàn)enter與ctrl+enter互換 文本框發(fā)送消息與換行(類似于QQ)
更新時(shí)間:2012年01月09日 19:23:48 作者:
今天與大家分享一下 asp.net textbox javascript實(shí)現(xiàn)enter與ctrl+enter互換 文本框發(fā)送消息與換行(類似于QQ),這個(gè)功能到底怎么實(shí)現(xiàn)?首先聲明以下幾點(diǎn)
1、也許講解有點(diǎn)初級(jí),希望高手不要“噴”我,因?yàn)槲抑啦⒉皇敲恳粋€(gè)人都是高手,我也怕高手們說(shuō)我裝13;
2、如有什么不對(duì)的地方,還希望大家指出,一定虛心學(xué)習(xí),如果有更好的辦法請(qǐng)告訴我一聲哦;
3、本文屬于作者原創(chuàng),尊重他人勞動(dòng)成果,轉(zhuǎn)載請(qǐng)注明作者,謝謝。
下面開(kāi)講:
如題,這個(gè)功能也困擾了我一兩天事件了,我也上網(wǎng)找了很多資料,但是網(wǎng)上大部分的說(shuō)法都差不多,問(wèn)題始終還是沒(méi)解決,于是乎我開(kāi)始找是問(wèn)題的根源,我開(kāi)始用的是文本框的onkeydown事件,分別寫了兩個(gè)js函數(shù),如下:
//enter發(fā)送
function IsEnter(evt)
{
if(window.event.keyCode ==13)
{
send();
return false;
}
}
//ctrl+enter發(fā)送
function IsEnterAndCtrl()
{
if(window.event.keyCode ==13 && window.event.ctrlKey)
{
send();
return false;
}
}
然后我就用文本框的onkeydown事件來(lái)調(diào)用這兩個(gè)函數(shù),可以一直效果不出來(lái),我就調(diào)試,發(fā)現(xiàn)event永遠(yuǎn)都是undefined,我無(wú)語(yǔ)了,然后我就換方法了,我把onkeydown函數(shù)里面加了一個(gè)event參數(shù),在IsEnter(evt)里面也定義了一下var obj = window.event ? evt.keyCode : evt.which;//window.event是針對(duì)IE,evt.keyCode是針對(duì)FF,這樣這個(gè)問(wèn)題就解決了,就不會(huì)出現(xiàn)undefined錯(cuò)誤了。
接下來(lái)問(wèn)題又來(lái)了,我發(fā)現(xiàn)onkeydown事件只要你按鍵盤上的任意鍵就會(huì)觸發(fā)這個(gè)事件,那么就無(wú)法實(shí)現(xiàn)ctrl和enter同時(shí)按了,又是一個(gè)糾結(jié)的問(wèn)題啊,還有我們有onkeydown事件就有onkeyup事件,接下來(lái)我就把onkeydown事件換成了onkeyup事件了,這樣問(wèn)題就解決了。
好了,問(wèn)題是越解決越少了,下面要做到是如何做到enter與ctrl+enter切換實(shí)現(xiàn)是換行還是發(fā)送消息?為了兼容性,我又定義了一個(gè)變量 var e = evt || window.event;我就是通過(guò)obj與e來(lái)實(shí)現(xiàn)換行與發(fā)送切換的,詳細(xì)js代碼如下:
//enter or ctrl+enter發(fā)送
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發(fā)送消息]")
{
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;
}
}
}
注意:以上代碼我都已經(jīng)在IE6、IE8、FF里測(cè)試過(guò),絕對(duì)有用,由于按enter發(fā)送消息的時(shí)候會(huì)與換行沖突,所以我用e.returnValue = false;txt.value="";不知道有沒(méi)有更好的方法?
2、如有什么不對(duì)的地方,還希望大家指出,一定虛心學(xué)習(xí),如果有更好的辦法請(qǐng)告訴我一聲哦;
3、本文屬于作者原創(chuàng),尊重他人勞動(dòng)成果,轉(zhuǎn)載請(qǐng)注明作者,謝謝。
下面開(kāi)講:
如題,這個(gè)功能也困擾了我一兩天事件了,我也上網(wǎng)找了很多資料,但是網(wǎng)上大部分的說(shuō)法都差不多,問(wèn)題始終還是沒(méi)解決,于是乎我開(kāi)始找是問(wèn)題的根源,我開(kāi)始用的是文本框的onkeydown事件,分別寫了兩個(gè)js函數(shù),如下:
復(fù)制代碼 代碼如下:
//enter發(fā)送
function IsEnter(evt)
{
if(window.event.keyCode ==13)
{
send();
return false;
}
}
//ctrl+enter發(fā)送
function IsEnterAndCtrl()
{
if(window.event.keyCode ==13 && window.event.ctrlKey)
{
send();
return false;
}
}
然后我就用文本框的onkeydown事件來(lái)調(diào)用這兩個(gè)函數(shù),可以一直效果不出來(lái),我就調(diào)試,發(fā)現(xiàn)event永遠(yuǎn)都是undefined,我無(wú)語(yǔ)了,然后我就換方法了,我把onkeydown函數(shù)里面加了一個(gè)event參數(shù),在IsEnter(evt)里面也定義了一下var obj = window.event ? evt.keyCode : evt.which;//window.event是針對(duì)IE,evt.keyCode是針對(duì)FF,這樣這個(gè)問(wèn)題就解決了,就不會(huì)出現(xiàn)undefined錯(cuò)誤了。
接下來(lái)問(wèn)題又來(lái)了,我發(fā)現(xiàn)onkeydown事件只要你按鍵盤上的任意鍵就會(huì)觸發(fā)這個(gè)事件,那么就無(wú)法實(shí)現(xiàn)ctrl和enter同時(shí)按了,又是一個(gè)糾結(jié)的問(wèn)題啊,還有我們有onkeydown事件就有onkeyup事件,接下來(lái)我就把onkeydown事件換成了onkeyup事件了,這樣問(wèn)題就解決了。
好了,問(wèn)題是越解決越少了,下面要做到是如何做到enter與ctrl+enter切換實(shí)現(xiàn)是換行還是發(fā)送消息?為了兼容性,我又定義了一個(gè)變量 var e = evt || window.event;我就是通過(guò)obj與e來(lái)實(shí)現(xiàn)換行與發(fā)送切換的,詳細(xì)js代碼如下:
復(fù)制代碼 代碼如下:
//enter or ctrl+enter發(fā)送
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發(fā)送消息]")
{
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;
}
}
}
注意:以上代碼我都已經(jīng)在IE6、IE8、FF里測(cè)試過(guò),絕對(duì)有用,由于按enter發(fā)送消息的時(shí)候會(huì)與換行沖突,所以我用e.returnValue = false;txt.value="";不知道有沒(méi)有更好的方法?
您可能感興趣的文章:
- 在uiview 的tableView中點(diǎn)擊cell進(jìn)入跳轉(zhuǎn)到另一個(gè)界面的實(shí)現(xiàn)方法
- 總結(jié)IOS界面間跳轉(zhuǎn)的幾種方法
- Activit跳轉(zhuǎn)動(dòng)畫之界面上某個(gè)位置并裂開(kāi)上下拉伸動(dòng)畫跳轉(zhuǎn)
- IOS應(yīng)用內(nèi)跳轉(zhuǎn)系統(tǒng)設(shè)置相關(guān)界面的方法
- IOS程序開(kāi)發(fā)之跳轉(zhuǎn)短信發(fā)送界面實(shí)現(xiàn)發(fā)送短信功能
- Android編程使用Fragment界面向下跳轉(zhuǎn)并一級(jí)級(jí)返回的實(shí)現(xiàn)方法
- php+js iframe實(shí)現(xiàn)上傳頭像界面無(wú)跳轉(zhuǎn)
- JS 退出系統(tǒng)并跳轉(zhuǎn)到登錄界面的實(shí)現(xiàn)代碼
- Android中應(yīng)用界面主題Theme使用方法和頁(yè)面定時(shí)跳轉(zhuǎn)應(yīng)用
- js實(shí)現(xiàn)界面向原生界面發(fā)消息并跳轉(zhuǎn)功能
相關(guān)文章
asp.net下用Aspose.Words for .NET動(dòng)態(tài)生成word文檔中的數(shù)據(jù)表格的方法
導(dǎo)出word 文檔,要求這個(gè)文檔的格式不是固定的,用戶可以隨便的調(diào)整,導(dǎo)出內(nèi)容中的數(shù)據(jù)表格列是動(dòng)態(tài)的,例如要求導(dǎo)出姓名和性別,你就要導(dǎo)出這兩列的數(shù)據(jù),而且這個(gè)文檔不是導(dǎo)出來(lái)之后再調(diào)整而是導(dǎo)出來(lái)后已經(jīng)是調(diào)整過(guò)了的。2010-04-04
ASP.NET Core MVC/WebApi基礎(chǔ)系列1
這篇文章主要介紹了ASP.NET Core MVC/WebApi基礎(chǔ)系列,后續(xù)會(huì)穿插講EF Core和ASP.NET Core,雖說(shuō)是基礎(chǔ)系列但也是也有你不知道的。2019-04-04
ASP.NET技巧:做個(gè)DataList可分頁(yè)的數(shù)據(jù)源
ASP.NET技巧:做個(gè)DataList可分頁(yè)的數(shù)據(jù)源...2006-09-09
ASP.NET?Core?6.0?基于模型驗(yàn)證的數(shù)據(jù)驗(yàn)證功能
這篇文章主要介紹了ASP.NET?Core?6.0?基于模型驗(yàn)證的數(shù)據(jù)驗(yàn)證,本文描述的數(shù)據(jù)驗(yàn)證方案,是基于官方的模型驗(yàn)證(Model validation),需要的朋友可以參考下2022-07-07
asp.net core下給網(wǎng)站做安全設(shè)置的方法詳解
這篇文章主要給大家介紹了關(guān)于asp.net core下給網(wǎng)站做安全設(shè)置的相關(guān)資料,文章通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
解協(xié)議時(shí)有符號(hào)和無(wú)符號(hào)整數(shù)型處理
這篇文章主要介紹了解協(xié)議時(shí)有符號(hào)和無(wú)符號(hào)整數(shù)型處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
MAUI項(xiàng)目中使用SnackBar與Toast通知功能
這篇文章介紹了MAUI項(xiàng)目中使用SnackBar與Toast通知功能的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02

