2013-01-18 3 views
0

HTML 입력 값의 경우 라틴 문자 (대소 문자) 만 허용하는 일반 표현식과 백 스페이스, 삭제, 화살표와 같은 다른 모든 키를 정의 할 수 있습니까? 키 및 .dot, @at? 이벤트 키 평가를위한 것이지, 나중에 화살표 키와 다른 키가 필요한 이유는 아닙니다. 이 단지 작은 문자를 입력 할 수 제한됩니다라틴 문자 및 기타 유용한 키만 허용하는 자바 스크립트 정규식

자바 스크립트

document.getElementById('foo').onkeydown = function (e) { 
    if (e.keyCode < 65 || e.keyCode > 90) { 
    e.preventDefault(); 
    return false; 
    } 
}; 

HTML

<textarea id="foo"></textarea> 

:

+2

키 이벤트 평가의 경우 키 코드를 사용하는 것이 좋습니다. 정규 표현식은 필요 없습니다. – VisioN

답변

0

당신은 같은 것을 사용할 수 있습니다. 또한 어퍼와 함께 작동하도록 약간 수정해야합니다.

JSfiddle.

0

자세한 내용을 제공하지 않으면 정규식이 도움이되지 않을 것이라고 생각합니다.

중요한 이벤트에 대해 자세히 알지는 못했지만 사전과 같은 객체를 작성하여 프로젝트 중 하나에서 잘 작동했지만 물론 오류가 발생하지 않았으며 매우 어렵습니다. 많은 키보드 레이아웃과 언어가 있기 때문에 100 %, 자바 스크립트 및 브라우저 구현에서 표준화되지 않은 이벤트 처리가 가능합니다. 나는이 기사를 먼저 읽으면 도움이된다. http://unixpapa.com/js/key.html

영어 (미국) 영어 키보드에 대한 제 해결 방법.

var Keys = { "BACKSPACE":8, "TAB":9,"ENTER":13,"SHIFT":16,"CTRL":17,"ALT":18, "PAUSEBREAK":19, "CAPSLOCK":20,"ESC":27, "SPACE":32, "PAGEUP":33, "PAGEDOWN":34, "END":35, "HOME":36, "LEFT":37, "UP":38, "RIGHT":39, "DOWN":40, "PRNTSCRN":44, "INSERT":45, "DELETE":46, "0":48, "1":49, "2":50, "3":51, "4":52, "5":53, "6":54, "7":55, "8":56, "9":57, "A":65, "B":66, "C":67, "D":68, "E":69, "F":70, "G":71, "H":72, "I":73, "J":74, "K":75, "L":76, "M":77, "N":78, "O":79, "P":80, "Q":81, "R":82, "S":83, "T":84, "U":85, "V":86, "W":87, "X":88, "Y":89, "Z":90, "WINKEY":91, "WINKEYR":92, "APPLICATION":93, "NUM0":96, "NUM1":97, "NUM2":98, "NUM3":99, "NUM4":100, "NUM5":101, "NUM6":102, "NUM7":103, "NUM8":104, "NUM9":105, "MULTIPLY":106, "ADD":107, "SUBTRACT":109, "DECIMALPOINT":110, "DIVIDE":111, "F1":112, "F2":113, "F3":114, "f4":115, "F5":116, "F6":117, "F7":118, "F8":119, "F9":120, "F10":121, "F11":122, "F12":123, "NUMLOCK":144, "SCROLLLOCK":145, "SEMICOLON":186, "EQUAL":187, "COMMA":188, "DASH":189, "PERIOD":190, "SLASH":191, "GRAVE":192, "OPENBRAKET":219, "BACKSLASH":220, "CLOSEBRAKET":221, "SINGLEQUOTE":222, "MMNEXT":176, "MMPREVIOUS":177, "MMSTOP":178, "MMPLAY":179, "MMREWIND":227, "MMFORWARD":228, "MYCOMPUTER":182, "MYCALCULATOR":183, "HELP":225, "Invalid!":0 
} 

if(event.keyCode == Keys['RIGHT']) //go right 
if(event.keyCode == Keys['LEFT']) //go left 
if(event.keyCode == Keys['ENTER']) //do something 
if(event.keyCode == Keys['ESC'] || event.keyCode == Keys['BACKSPACE']) //exit 

당신은 화살표와 다른 키를 언급처럼 게임 같은 바인딩 키를 사용하는 경우, CTRL ALT 나타내는 깜박이 인 ALTGr 적용 옵션 COMMAND 같은 수식을 사용하지 사용할 수 있습니다 그들은 엉망, 너무 많은 불일치가 있습니다. Command 키가 응용 프로그램 키인 것처럼, 다른 Alt 키가 다른 컨트롤처럼 보이는 것입니다. 또한 일부 키보드에는 두 번째 alt 또는 ctrl이 없습니다. 그래서 그것의 지옥 예외.

관련 문제