2011-04-04 21 views
5

Biraz alışılmadık bir formla ilgili sorunum var. Web uygulağım bir barkod okuyucusundan tarayıcı girişi dinler.Bir form göndererek yeni satırı durdurun mu?

\n
~100.0101~\n 

bir satır ise: barkod okuyucu aşağıdaki biçimde klavye girişi olarak sunulur. Ben bir regex ile global bir javascript dinleyicisi kullanıyorum - dinleyici regex ile eşleşen girdileri duyarsa, ben barcodeHandler() işlevimi çağırın.

Maalesef bu formlarla iyi etkileşim olmaması: tarama yaparken kullanıcının form girişi odaklanmış ise dinleyici devreye giriyor arka önce form gönderme' anlamında \n alır çünkü, form, gönderilen ve mesajlar edilir '.

Tarayıcı girdisini değiştiremiyorum, yani \n girildiğinde formları gönderebilmem için herhangi bir yol var mı?

Açıkçası, formlarımın Enter tuşuyla çalışmasını isterdim ve mümkünse varsayılan form davranışını değiştirmemeyi tercih ederim!

çok teşekkürler!

+1

; "giriş" anahtarının formun gönderilmesi olarak işlenmesini engellemek için. – ITroubs

+0

Teşekkürler - yine de Enter tuşuna basmayı gerçekten isterim - sadece barkod tarayıcısı tarafından sağlanan '\ n' değil. İkisini ayırmanın bir yolu var mı? – AP257

+0

Ah, normal ifadenin ilk kısmı eşleştirildiğinde olay dinleyicisini uygulayabilirim. Bu işe yarıyor. – AP257

cevap

8

Form kontrollerini tuşa basma yakalamak ve preventDefault() veya return false kullanarak varsayılan eylemi engellemek gerekir.

// do this for all <input> <textarea> and <select> elements on the page. 
input.addEventListener("keypress", function(event){ 
    if (event.which == '10' || event.which == '13') { 
     event.preventDefault(); 
    } 
}, false); 

veya jQuery:

$("input, textarea, select").keypress(function(event){ 
    if (event.which == '10' || event.which == '13') { 
     event.preventDefault(); 
    } 
}); 
Eğer Jquery kullanıp) (anahtar eylemler üzerinde özel fonksiyon atamak ve event.preventDefault yapabilirsiniz
+1

bir çekicilik gibi çalışır! Bu şekilde kullandım: $ (": input") .basit (// code) 'çünkü tüm girdilerde bunu yakalamak istedim. Teşekkürler. +1 –

3

Formun başlatılmasını iptal edin ve gönderme seçeneğindeki bir onclick işleyici olarak kendi alternatifinizi sağlayın.

<form action="submit.php" onsubmit="return false;"> 
    Some input ...<input type="text"/> 
    <input type="button" value="Submit" onclick="parentNode.submit();"> 
</form> 
İlgili konular