2009-09-24 5 views
9

Я кодирую веб-портал для телеприставки с пользовательской клавиатурой.Программная отправка ключей в поле ввода?

Клавиатура имеет большинство стандартных символов, но не поддерживает обратное пространство!

Поскольку есть другие бесплатные пользовательские клавиши, я хотел бы сопоставить один из них с backspace, когда я нахожусь в поле ввода или в текстовой области.

Вопрос: Как программно отправить обратно в поле ввода?

В любом случае: Как программно отправить любую клавишу (например, клавишу со стрелкой) в поле ввода?

+0

К сожалению. STB = верхняя коробка. – KaptajnKold

ответ

2

Если вы находитесь в веб-браузере, вы не можете подделывать реальные события ввода, такие как события клавиатуры и мыши (из соображений безопасности).

Тем не менее, вы сможете обнаружить другие нажатые клавиши, чтобы вы могли ответить на событие onKeyDown для ключа, который хотите использовать, и просто обновить поле ввода при обнаружении его нажатия ...

+1

Я надеялся, что это не придет, но я думаю, это единственное решение, если то, что вы говорите, верно. – KaptajnKold

+0

Вы конечно * можете * создавать и отправлять события. – NickFitz

0

Это не совсем то, о чем вы просили, но Control-H совпадает с обратным пространством в большинстве контекстов.

+0

Что вы подразумеваете под «but Control-H», пошлите CTRL + H? – erm3nda

+1

В любом браузере, который я когда-либо использовал, CTRL + H открывает историю. – PrinceTyke

-2

Использование onkeypress и JavaScript. В скрипте вы можете проверить введенный символ, который отображается в обратном пространстве, и заставить его выполнить эту операцию над текстом в поле.

5

Предполагая, что браузер поддерживает модель событий W3C, вы можете создать KeyEvent и отправить его с использованием метода ввода dispatchEvent. На mozilla.org есть example (using MouseEvent). Есть также еще несколько ссылок над where I last answered this question ;-)

UPDATE: следующий код был проверен в Firefox 3.5, и успешно забоя через символы в текстовое поле:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 

<script type="text/javascript"> 

window.onload = function() { 
    var field = document.getElementById("foo"); 
    var button = document.getElementById("bar"); 
    button.addEventListener("click", function(event) { 
     var keyEvent = document.createEvent("KeyboardEvent"); 
     keyEvent.initKeyEvent("keypress", true, true, null, false, false, false, false, 8, 0); 
     field.dispatchEvent(keyEvent); 
    }, false); 
} 

</script> 

</head> 
<body> 
<div> 
<input type="text" id="foo" value="abcdef"> 
<button id="bar" type="button">Fire key event</button> 
</div> 
</body> 
</html> 
+0

Ницца! Большое спасибо. – KaptajnKold

+0

Увы! Это не работает в Opera или Webkit. – KaptajnKold

+0

Похоже, что WebKit не поддерживает initKeyEvent - я посмотрю, смогу ли найти обходной путь. – NickFitz

Смежные вопросы