2012-08-08 3 views
6

Sto provando a disabilitare tutti gli altri caratteri dall'inserimento nell'input di testo.

Dal momento che per ottenere il $ si deve premere il tasto spostamento e il tasto . Non sono sicuro di come otterresti il ​​codice chiave per qualcosa del genere?

+0

Eventuali duplicati di [quali sono le JavaScript KeyCodes?] (Http://stackoverflow.com/questions/5603195/what-are-the-javascript-keycodes) –

risposta

5

I codici chiave si riferiscono solo ai tasti. $ è un personaggio, realizzato attraverso due tasti, Maiusc e 4. Non esiste un codice chiave esplicitamente $quando si utilizza onkeydown

Edit: È stato sottolineato da Edward che onkeypress utilizza combinazioni di tasti, e ha di codice chiave per combinazioni. Impara qualcosa di nuovo ogni giorno :)

Here's some code, modificato dall'esempio onkeydown fornito da MDN, per rilevare i codici tasto di pressione tasti.

Here's the fiddle aggiornato per essere Firefox-friendly, utilizzando l'aiuto da this S.O. post. Anche la soluzione JQuery funziona, se oscillate in quel modo.

+0

Il violino dalla tua modifica dà questo risultato in firefox12: 'keyCode per il tasto premuto: 0' (su qualsiasi tasto che premo ..) – GitaarLAB

+0

@GitaarLAB Che strano. Funziona in IE e Chrome. Non riesco ad immaginare che Firefox non supporti 'onkeypress', anche se lo scambio di' onkeydown' funziona in Firefox. –

+0

Check out [questo S.O. thread per informazioni su onkeypress in Firefox] (http://stackoverflow.com/questions/4496910/onkeypress-event-not-working-in-firefox) Dubito che sia anche l'unico –

2

Quindi NON utilizzare questo modo per risolvere il problema: poiché non è possibile prevedere che ogni layout di tastiera avrà sempre $ -sign inserito come shift + 4.
È ancora possibile ottenere il codice di accesso 4, e controllare se è stato premuto MAIUSC, ma non si poteva essere sicuri di questo !!

Quindi sarebbe meglio sostituire semplicemente tutti i caratteri non validi nei campi (prima di inviare i dati). Pensa: str.replace()
Puoi anche verificare il set di caratteri non validi nell'evento onkeyup della casella di input, sostituendo in modo efficace tutti i caratteri non validi durante la digitazione!
Come: onkeyup="this.value.replace(/[your illegal characters]/gi, '')"
Questo dovrebbe fare quello che vuoi.

Nota: non dovresti MAI fidarti dell'input del browser e dovresti comunque filtrare questo input nello script di ricezione !!!

Buona fortuna !!

5

Non c'è onkeydown codice chiave, come già detto da ngmiceli

Sebbene, esiste onkeypress keycode ed è pari a 36.

JavaScript Event KeyCode Test Page

+0

+1 Grazie per quello! –

1

non esiste un codice chiave per $, dato che non è una chiave valida - deve essere accessibile tramite un qualche tipo di cambio.

In genere, è necessario eseguire un controllo per verificare se lo shifter era attivo e l'ascolto per l'evento keypress sulla chiave pertinente.Qualcosa di simile a questo per un layout QWERTY nell'istanza:

var shiftPressed = false; 

$(window).keydown(function(e) { 
    if(e.which == 16) { shiftPressed = true; } 
    if(e.which == 52 && shiftPressed) 
    { 
     // Do whatever here... 
    } 
}); 

$(window).keyup(function(e) { 
    if(e.which == 16) { shiftPressed = false; } 
}); 
0

onkeypress - Il codice di carattere Unicode è: 36

onkeydown - il codice della chiave Unicode è: 52