2009-09-24 19 views
9

Özel klavye ile set üstü kutu için bir web portalı yapıyorum.Anahtarlar giriş alanına programlı olarak gönderiliyor mu?

Klavye standart karakter tuşlarının çoğuna sahiptir, ancak arka alanı yoktur!

Diğer bazı özel tuşlar bulunduğundan, giriş alanında veya metin alanındayken bunlardan birini arka plana eşlemek istiyorum.

Sorun şudur: Giriş alanına programsal olarak nasıl arka plan gönderiyorum?

Veya bunun için: Giriş alanına herhangi bir anahtarı (ok tuşu gibi) program aracılığıyla nasıl gönderirim?

+0

üzgünüm. STB = set üstü kutu. – KaptajnKold

cevap

2

Web tarayıcınız varsa, klavye ve fare olayları gibi gerçek giriş olaylarını (güvenlik nedenleriyle) gerçekleştiremezsiniz.

Bununla birlikte, basılan diğer özel anahtarları algılayabileceksiniz, böylece kullanmak istediğiniz anahtar için onKeyDown olayına yanıt verebilirsiniz ve bu tuşa basıldığını algıladığınızda giriş alanını güncelleyebilirsiniz ...

+1

Bunun gelmeyeceğini umuyordum, ama söylediklerin doğruysa tek çözüm budur. – KaptajnKold

+0

Kesinlikle * etkinlikleri * oluşturabilir ve gönderebilirsiniz. – NickFitz

0

Bu sizin için tam olarak istenen bir şey değildir, ancak Control-H çoğu bağlamda bir arka alan ile aynıdır.

+0

"Control-H" ile ne demek istiyorsun CTRL + H? – erm3nda

+1

Daha önce kullandığım herhangi bir tarayıcıda, CTRL + H geçmişini getiriyor. – PrinceTyke

-2

Onkeypress'i ve JavaScript'i kullanın. Komut dosyasında, haritaya girilen karakteri geri boşlukta kontrol edebilir ve bu işlemi sahada metin üzerinde gerçekleştirmesini sağlayabilirsiniz.

5

Tarayıcının W3C olay modelini desteklediğini varsayarak, bir KeyEvent oluşturabilir ve giriş alanının dispatchEvent yöntemini kullanarak gönderebilirsiniz. Mozilla.org üzerinde bir example (using MouseEvent) var. Orada where I last answered this question ;-)

GÜNCELLEME üzerinde biraz daha bağlantıları da vardır: Aşağıdaki kod Firefox 3.5 test edilmiş ve başarılı bir metin alanına karakterler aracılığıyla backspaces:

<!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

Güzel! Çok teşekkürler. – KaptajnKold

+0

Alas! Bu Opera veya Webkit'te çalışmıyor. – KaptajnKold

+0

WebKit initKeyEvent'i desteklemiyor gibi görünüyor - Bir geçici çözüm bulabilir miyim göreceğim. – NickFitz

İlgili konular