请教键盘事件-->如何截取键盘消息?

jayli426 2006-06-12 02:31:09
现在只想让一个文本框中输入数字和字母,以及"_","-"
我知道可以通过键盘事件判断输入拉什么。例如可以在
onkeydown中写下对应方法
但是如何截取键盘消息,然后将对应字符转化呢
例如输入一个空格就转化为""
google一把,找不到对应方法,只好请大虾指教
...全文
477 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
lym1314 2006-06-14
  • 打赏
  • 举报
回复
学习
ICeeYeS 2006-06-13
  • 打赏
  • 举报
回复
我刚好前端时间搞了一个。

http://www.blueidea.com/bbs/newsdetail.asp?id=2577861&posts=
你看看吧。应该很有帮助
mingxuan3000 2006-06-12
  • 打赏
  • 举报
回复
我说的方法只是让你参考下 ,知道组合键怎么做的 ,那个只是我在网上查的 ,具体的你自己做

/[a-zA-Z0-9]|\-|_/

/[a-zA-Z0-9|\-|_]/
没区别


/[^a-zA-Z0-9\-_]/

/[^a-zA-Z0-9|\-|_]/
含义有点不一样,不过在这里也没影响,结果一样的


jayli426 2006-06-12
  • 打赏
  • 举报
回复
对不起,问错拉,问急拉
首先问
/[a-zA-Z0-9]|\-|_/

/[a-zA-Z0-9|\-|_]/
有区别吗?

/[^a-zA-Z0-9\-_]/

/[^a-zA-Z0-9|\-|_]/
有区别吗?

请大虾指教阿
jayli426 2006-06-12
  • 打赏
  • 举报
回复
弱若问一句
/[a-zA-Z0-9]|\-|_/

/[^a-zA-Z0-9|\-|_]/
是否是没有区别呢??
同时期待mingxuan3000还有其他老大能给出
纯粹字符判断的做法,小弟感激不金阿
jayli426 2006-06-12
  • 打赏
  • 举报
回复
现在用另外一个方法实现了这个目标不过有些???,大家试一下,就知道,其实是先加后删的
小小的土拉,呵呵,不过总算实现拉,希望没有bug渥
function verify()
{
var txt1 = document.getElementById("testkey1");
var value = txt1.value;
var len = value.length;

var last = value.substring(len-1,len);
var regexp = /[a-zA-Z0-9]|\-|_/;
var regexp2 = /[^a-zA-Z0-9|\-|_]/g;
if( !regexp.test(last))
{
var effectiveStr = value.replace(regexp2,"");
txt1.value=effectiveStr;
alert("只能输入数字,字符,-,_这些字符!!")
}
}

<input name="txt1" type="text" id="testkey1" onKeyUp="verify()" value="">
班门弄斧 2006-06-12
  • 打赏
  • 举报
回复
up!
jayli426 2006-06-12
  • 打赏
  • 举报
回复
mingxuan3000老大,我不知我没有理解你的意思,还是我测试方法有问题
现在我将你的代码简化,希望文本框只能输入数字
function keyChar1(){
if(event.shiftKey){
return("");
}
}else{
switch(event.keyCode.toString()){
case "96":return("0");
case "97":return("1");
case "98":return("2");
case "99":return("3");
case "100":return("4");
case "101":return("5");
case "102":return("6");
case "103":return("7");
case "104":return("8");
case "105":return("9");

default:return("");//除了数字,一律返回""
}
}
}
触发事件的代码

<input name="employeename" type="text" id="employeename" keydown="keyChar1()" />

首先,这样写对吗
我理解的return就是截取键盘消息后,最终转化的键盘字符,可是在文本框中还是什么都能输入渥?这是为什么阿?请指教
Apq001 2006-06-12
  • 打赏
  • 举报
回复
意思一样,写法不同而已,别误会。
Apq001 2006-06-12
  • 打赏
  • 举报
回复
打开页面时间太长,原来这么多人都回过了
我说的就是jayli426(jayli426)的做法。
Apq001 2006-06-12
  • 打赏
  • 举报
回复
try
在你写注释的地方:

return false;
mingxuan3000 2006-06-12
  • 打赏
  • 举报
回复
function keyChar(){
if(event.shiftKey){
switch(event.keyCode.toString()){
case "96":return("0");
case "97":return("1");
case "98":return("2");
case "99":return("3");
case "100":return("4");
case "101":return("5");
case "102":return("6");
case "103":return("7");
case "104":return("8");
case "105":return("9");
case "111":return("/");
case "110":return(".");
case "106":return("*");
case "109":return("-");
case "107":return("+");
case "144":return("numlock");
case "192":return("~");
case "49":return("!");
case "50":return("@");
case "51":return("#");
case "52":return("$");
case "53":return("%");
case "54":return("^");
case "55":return("&");
case "56":return("*");
case "57":return("(");
case "48":return(")");
case "189":return("_");
case "187":return("+");
case "219":return("{");
case "221":return("}");
case "220":return("|");
case "20":return("caplock");
case "186":return(":");
case "222":return("\"");
case "188":return("<");
case "190":return(">");
case "191":return("?");
case "8":return("backspace");
case "9":return("tab");
case "81":return("Q");
case "87":return("W");
case "69":return("E");
case "82":return("R");
case "84":return("T");
case "89":return("Y");
case "85":return("U");
case "73":return("I");
case "79":return("O");
case "80":return("P");
case "65":return("A");
case "83":return("S");
case "68":return("D");
case "70":return("F");
case "71":return("G");
case "72":return("H");
case "74":return("J");
case "75":return("K");
case "76":return("L");
case "16":return("shift");
case "90":return("Z");
case "88":return("X");
case "67":return("C");
case "86":return("V");
case "66":return("B");
case "78":return("N");
case "77":return("M");
case "17":return("ctrl");
case "91":return("win");
case "92":return("win");
case "18":return("alt");
case "32":return(" ");
case "93":return("menu");
case "38":return("up");
case "40":return("down");
case "37":return("left");
case "39":return("right");
case "45":return("insert");
case "46":return("delete");
case "36":return("home");
case "35":return("end");
case "33":return("pageup");
case "34":return("pagedown");
case "34":return("printcreen");
case "145":return("scrolllock");
case "19":return("pause");
case "27":return("esc");
case "12":return("middle");
case "13":return("\r\n");
case "112":return("f1");
case "113":return("f2");
case "114":return("f3");
case "115":return("f4");
case "116":return("f5");
case "117":return("f6");
case "118":return("f7");
case "119":return("f8");
case "120":return("f9");
case "121":return("f10");
case "122":return("f11");
case "123":return("f12");
default:return("unknown");
}
}else{
switch(event.keyCode.toString()){
case "96":return("0");
case "97":return("1");
case "98":return("2");
case "99":return("3");
case "100":return("4");
case "101":return("5");
case "102":return("6");
case "103":return("7");
case "104":return("8");
case "105":return("9");
case "111":return("/");
case "110":return(".");
case "106":return("*");
case "109":return("-");
case "107":return("+");
case "144":return("numlock");
case "192":return("`");
case "49":return("1");
case "50":return("2");
case "51":return("3");
case "52":return("4");
case "53":return("5");
case "54":return("6");
case "55":return("7");
case "56":return("8");
case "57":return("9");
case "48":return("0");
case "189":return("-");
case "187":return("=");
case "8":return("backspace");
case "9":return("tab");
case "81":return("q");
case "87":return("w");
case "69":return("e");
case "82":return("r");
case "84":return("t");
case "89":return("y");
case "85":return("u");
case "73":return("i");
case "79":return("o");
case "80":return("p");
case "219":return("[");
case "221":return("]");
case "220":return("\\");
case "20":return("caplock");
case "65":return("a");
case "83":return("s");
case "68":return("d");
case "70":return("f");
case "71":return("g");
case "72":return("h");
case "74":return("j");
case "75":return("k");
case "76":return("l");
case "186":return(";");
case "222":return("'");
case "16":return("shift");
case "90":return("z");
case "88":return("x");
case "67":return("c");
case "86":return("v");
case "66":return("b");
case "78":return("n");
case "77":return("m");
case "188":return(",");
case "190":return(".");
case "191":return("/");
case "17":return("ctrl");
case "91":return("win");
case "92":return("win");
case "18":return("alt");
case "32":return(" ");
case "93":return("menu");
case "38":return("up");
case "40":return("down");
case "37":return("left");
case "39":return("right");
case "45":return("insert");
case "46":return("delete");
case "36":return("home");
case "35":return("end");
case "33":return("pageup");
case "34":return("pagedown");
case "34":return("printcreen");
case "145":return("scrolllock");
case "19":return("pause");
case "27":return("esc");
case "12":return("middle");
case "13":return("\r\n");
case "112":return("f1");
case "113":return("f2");
case "114":return("f3");
case "115":return("f4");
case "116":return("f5");
case "117":return("f6");
case "118":return("f7");
case "119":return("f8");
case "120":return("f9");
case "121":return("f10");
case "122":return("f11");
case "123":return("f12");
default:return("unknown");
}
}
}




你参考下 如if(event.shiftKey && event.keyCode=13){
是是非非 2006-06-12
  • 打赏
  • 举报
回复
event.ctrlKey
event.altKey
event.shift
jayli426 2006-06-12
  • 打赏
  • 举报
回复
但是现在问题是如何实现组合键???
例如我现在的功能是只能输入大小写字母和数字,我的原有代码是

function keyDown(){
var keycode = event.keyCode;
var realkey = String.fromCharCode(event.keyCode);
if(keycode!=16)
{ alert("keycode: " + keycode + "\nrealkey: " + realkey);
}

var regexp = /[a-zA-Z0-9]/;

if(regexp.test(realkey))
{
event.returnValue=true;
}
else
{
event.returnValue=false;
}
}

但是这对付不了组合键情况,例如大写字母我们是输入shift+c,这是合法的
但是比方说美元符号$=shift+4,但是因为键盘不区分组合键,它取的最后一个字符仍然是4
所以$也能输入到文本框中,现在该如何是好呢,判断不了组合键阿??
jayli426 2006-06-12
  • 打赏
  • 举报
回复
刚刚从msdn看到方法
if(keycode==32)
{
event.returnValue=false;//可以实现输入空格等于没有输入,即可以等于"",该怎么实现呢
}
mingxuan3000 2006-06-12
  • 打赏
  • 举报
回复
if(keycode==32)
{
return false;//输入空格等于没有输入,即可以等于"",该怎么实现呢
}
jayli426 2006-06-12
  • 打赏
  • 举报
回复
应该是我没有描述清楚,我的意思是连空格都输不进文本框
例如这是我样例代码,空格对应的keycode是32
如果当我按下键盘上的空格键的时候,根本就不可能输入到文本框
两位大虾提供的 是 去判断文本框中输入的是哪个字符
却没有将这个对应的键盘操作取代的方法
也许表述还是不大清楚,但大概意思应该还是有的
<script language="javascript">
function keyDown(){
var keycode = event.keyCode;
var realkey = String.fromCharCode(event.keyCode);
alert("keycode: " + keycode + "\nrealkey: " + realkey);
if(keycode==32)
{
//输入空格等于没有输入,即可以等于"",该怎么实现呢
}

}

</script>


skylaugh 2006-06-12
  • 打赏
  • 举报
回复
function enter(e)
{
if(e.keyCode==13)//13是键盘相应keycode
{
checklogin();// 相应操作
}
}
mingxuan3000 2006-06-12
  • 打赏
  • 举报
回复
<input onkeydown="if(event.keyCode==13)">

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧