2012-11-05 9 views
23

Eventuali duplicati:
How to prevent users from entering invalid characters inside an input fieldconsentendo solo alfanumerico valori

Ho 3 caselle di testo su una pagina. Uno di questi dovrebbe consentire numeri, gli altri alfabeti e il 3 numeri o alfabeti.

Poiché questo è l'unico requisito, non desidero utilizzare il plug-in di convalida o qualsiasi altro plug-in di terze parti. Come posso farlo creando il mio plugin usando jQuery puro?

Questo è quello che ho fatto ma ho la sensazione che il codice diventi troppo lungo

$(this).keydown(function(e) 
     { 
      var key = e.charCode || e.keyCode || 0;    
      return (
       key == 8 || 
       key == 9 || 
       key == 46 || 
       (key >= 37 && key <= 40) || 
       (key >= 48 && key <= 57) || 
       (key >= 96 && key <= 105)); 
     }); 

http://jsfiddle.net/Cvus8/

Qualcuno può dirmi quale si said il modo migliore per affrontare questo problema?

+1

Regex può essere un'opzione per ridurre al minimo le dimensioni del codice, ma si dovrà scavare in più. – Scorpio

+2

Non dimenticare che gli utenti possono anche incollare il testo dagli Appunti, nonché le differenze locali nei set di caratteri. –

+0

quindi come gestisco gli scenari degli appunti? – KayKay

risposta

43

La soluzione migliore potrebbe essere quello di andare con controlli basati su espressioni regolari. Esempio di sotto limiterà solo caratteri alfanumerici nel campo con id text:

$('#text').keypress(function (e) { 
    var regex = new RegExp("^[a-zA-Z0-9]+$"); 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
    if (regex.test(str)) { 
     return true; 
    } 

    e.preventDefault(); 
    return false; 
}); 
+2

questo non funziona con simboli come! @ # $%^& *() – CountMurphy

+1

@CountMurphy L'espressione regolare nella risposta è progettata per consentire solo lettere maiuscole e minuscole e numeri. Non consente i simboli di design. Se hai bisogno di simboli, puoi espandere l'espressione regolare per includerli. – Kami

+0

Sembra che ho fatto un errore nel mio codice di test. I simboli di cui sopra sono stati mostrati nella mia casella di testo. Il mio errore, la tua soluzione funziona. – CountMurphy

10

Una cifra nel range 1-9 seguito da zero o più altre cifre:

^[1-9]\d*$ 

Assicurarsi che una stringa contiene solo (ASCII) caratteri alfanumerici, sottolinea e spazi

^[\w ]+$ 

Solo Alfabeti senza spazio o _

^[a-zA-Z]+$ 

Per abbinare una stringa che contiene solo quei caratteri (O una stringa vuota), provare

^[a-zA-Z0-9_]*$ 

Alcuni modelli che possono aiutare ..ma credo che sarà necessario modificarli secondo i vostri need..I spero che aiutare ..

Problemi correlati