asp.net textbox javascript實(shí)現(xiàn)enter與ctrl+enter互換 文本框發(fā)送消息與換行(類似于QQ)
更新時間:2012年01月09日 19:23:48 作者:
今天與大家分享一下 asp.net textbox javascript實(shí)現(xiàn)enter與ctrl+enter互換 文本框發(fā)送消息與換行(類似于QQ),這個功能到底怎么實(shí)現(xiàn)?首先聲明以下幾點(diǎn)
1、也許講解有點(diǎn)初級,希望高手不要“噴”我,因為我知道并不是每一個人都是高手,我也怕高手們說我裝13;
2、如有什么不對的地方,還希望大家指出,一定虛心學(xué)習(xí),如果有更好的辦法請告訴我一聲哦;
3、本文屬于作者原創(chuàng),尊重他人勞動成果,轉(zhuǎn)載請注明作者,謝謝。
下面開講:
如題,這個功能也困擾了我一兩天事件了,我也上網(wǎng)找了很多資料,但是網(wǎng)上大部分的說法都差不多,問題始終還是沒解決,于是乎我開始找是問題的根源,我開始用的是文本框的onkeydown事件,分別寫了兩個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事件來調(diào)用這兩個函數(shù),可以一直效果不出來,我就調(diào)試,發(fā)現(xiàn)event永遠(yuǎn)都是undefined,我無語了,然后我就換方法了,我把onkeydown函數(shù)里面加了一個event參數(shù),在IsEnter(evt)里面也定義了一下var obj = window.event ? evt.keyCode : evt.which;//window.event是針對IE,evt.keyCode是針對FF,這樣這個問題就解決了,就不會出現(xiàn)undefined錯誤了。
接下來問題又來了,我發(fā)現(xiàn)onkeydown事件只要你按鍵盤上的任意鍵就會觸發(fā)這個事件,那么就無法實(shí)現(xiàn)ctrl和enter同時按了,又是一個糾結(jié)的問題啊,還有我們有onkeydown事件就有onkeyup事件,接下來我就把onkeydown事件換成了onkeyup事件了,這樣問題就解決了。
好了,問題是越解決越少了,下面要做到是如何做到enter與ctrl+enter切換實(shí)現(xiàn)是換行還是發(fā)送消息?為了兼容性,我又定義了一個變量 var e = evt || window.event;我就是通過obj與e來實(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里測試過,絕對有用,由于按enter發(fā)送消息的時候會與換行沖突,所以我用e.returnValue = false;txt.value="";不知道有沒有更好的方法?
2、如有什么不對的地方,還希望大家指出,一定虛心學(xué)習(xí),如果有更好的辦法請告訴我一聲哦;
3、本文屬于作者原創(chuàng),尊重他人勞動成果,轉(zhuǎn)載請注明作者,謝謝。
下面開講:
如題,這個功能也困擾了我一兩天事件了,我也上網(wǎng)找了很多資料,但是網(wǎng)上大部分的說法都差不多,問題始終還是沒解決,于是乎我開始找是問題的根源,我開始用的是文本框的onkeydown事件,分別寫了兩個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事件來調(diào)用這兩個函數(shù),可以一直效果不出來,我就調(diào)試,發(fā)現(xiàn)event永遠(yuǎn)都是undefined,我無語了,然后我就換方法了,我把onkeydown函數(shù)里面加了一個event參數(shù),在IsEnter(evt)里面也定義了一下var obj = window.event ? evt.keyCode : evt.which;//window.event是針對IE,evt.keyCode是針對FF,這樣這個問題就解決了,就不會出現(xiàn)undefined錯誤了。
接下來問題又來了,我發(fā)現(xiàn)onkeydown事件只要你按鍵盤上的任意鍵就會觸發(fā)這個事件,那么就無法實(shí)現(xiàn)ctrl和enter同時按了,又是一個糾結(jié)的問題啊,還有我們有onkeydown事件就有onkeyup事件,接下來我就把onkeydown事件換成了onkeyup事件了,這樣問題就解決了。
好了,問題是越解決越少了,下面要做到是如何做到enter與ctrl+enter切換實(shí)現(xiàn)是換行還是發(fā)送消息?為了兼容性,我又定義了一個變量 var e = evt || window.event;我就是通過obj與e來實(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里測試過,絕對有用,由于按enter發(fā)送消息的時候會與換行沖突,所以我用e.returnValue = false;txt.value="";不知道有沒有更好的方法?
您可能感興趣的文章:
- 在uiview 的tableView中點(diǎn)擊cell進(jìn)入跳轉(zhuǎn)到另一個界面的實(shí)現(xiàn)方法
- 總結(jié)IOS界面間跳轉(zhuǎn)的幾種方法
- Activit跳轉(zhuǎn)動畫之界面上某個位置并裂開上下拉伸動畫跳轉(zhuǎn)
- IOS應(yīng)用內(nèi)跳轉(zhuǎn)系統(tǒng)設(shè)置相關(guān)界面的方法
- IOS程序開發(fā)之跳轉(zhuǎn)短信發(fā)送界面實(shí)現(xiàn)發(fā)送短信功能
- Android編程使用Fragment界面向下跳轉(zhuǎn)并一級級返回的實(shí)現(xiàn)方法
- php+js iframe實(shí)現(xiàn)上傳頭像界面無跳轉(zhuǎn)
- JS 退出系統(tǒng)并跳轉(zhuǎn)到登錄界面的實(shí)現(xiàn)代碼
- Android中應(yīng)用界面主題Theme使用方法和頁面定時跳轉(zhuǎn)應(yīng)用
- js實(shí)現(xiàn)界面向原生界面發(fā)消息并跳轉(zhuǎn)功能
相關(guān)文章
Asp.Net MVC4通過id更新表單內(nèi)容的思路詳解
一個表單一旦創(chuàng)建完,其中大部分的字段便不可再編輯。只能編輯其中部分字段。下面通過本文給大家分享Asp.Net MVC4通過id更新表單內(nèi)容的思路詳解,需要的朋友參考下吧2017-07-07.net mvc頁面UI之Jquery博客日歷控件實(shí)現(xiàn)代碼
最近在做一個博客系統(tǒng),其他需要用到博客日歷控件,網(wǎng)上搜索了很多資料,其中大部分都是javascript的,經(jīng)過總結(jié)使用jquery實(shí)現(xiàn)了博客日歷效果。代碼如下2013-09-09ASP.NET Core啟動地址配置方法及優(yōu)先級順序
這篇文章主要介紹了ASP.NET Core啟動地址配置方法及優(yōu)先級順序,如果在同一臺機(jī)器上運(yùn)行多個ASP.NET Core實(shí)例,使用默認(rèn)值肯定不合適,下面我們一起進(jìn)入文章了解具體內(nèi)容吧2022-03-03asp.net中GridView數(shù)據(jù)鼠標(biāo)移入顯示提示信息
本篇文章給大家介紹在asp.net中g(shù)ridview數(shù)據(jù)鼠標(biāo)移入顯示提示信息,需要的朋友可以參考下本文2015-09-09深入.net調(diào)用webservice的總結(jié)分析
本篇文章是對.net調(diào)用webservice進(jìn)行了詳細(xì)的總結(jié)與分析,需要的朋友參考下2013-05-05