Come posso limitare gli utenti a immettere caratteri speciali nella casella di testo. Voglio solo numeri e alfabeti da inserire (digitato/incollato).convalida JavaScript: caratteri speciali bloccati
Eventuali campioni?
Come posso limitare gli utenti a immettere caratteri speciali nella casella di testo. Voglio solo numeri e alfabeti da inserire (digitato/incollato).convalida JavaScript: caratteri speciali bloccati
Eventuali campioni?
Hai due approcci a questo:
Suggerirei il secondo metodo perché è meno irritante. Ricorda di controllare anche onpaste
. Quindi possiamo copiare e incollare caratteri speciali quindi utilizzare onpaste
per limitare l'inserimento di caratteri speciali
Inoltre, ti suggerisco di riconsiderare se vuoi davvero impedire agli utenti di immettere caratteri speciali. Perché molte persone hanno $, #, @ e * nelle loro password.
Presumo che questo potrebbe essere al fine di prevenire l'iniezione SQL; In tal caso: è meglio che tu gestisca i controlli sul lato server. O meglio ancora, sfuggire ai valori e memorizzarli nel database.
In pratica, è sufficiente utilizzare un gestore onkeypress appropriato. Vedi http://www.qodo.co.uk/blog/javascript-restrict-keyboard-character-input/ e l'esempio http://www.qodo.co.uk/wp-content/uploads/2008/05/javascript-restrict-keyboard-character-input.html
Ti aiuterebbe ... presumi di avere un modulo con il modulo "formname" e una casella di testo con il nome "txt". quindi è possibile utilizzare il codice seguente per consentire solo i valori aphanumeric
var checkString = document.formname.txt.value;
if (checkString != "") {
if (/[^A-Za-z\d]/.test(checkString)) {
alert("Please enter only letter and numeric characters");
document.formname.txt.focus();
return (false);
}
}
Prova questo, questa funzione permette alfanumerici e spazi:
function alpha(e) {
var k;
document.all ? k = e.keyCode : k = e.which;
return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || k == 32 || (k >= 48 && k <= 57));
}
nel tuo html:
<input type="text" name="name" onkeypress="return alpha(event)"/>
Per i caratteri speciali:
var iChars = "[email protected]#$%^&*()+=-[]\\\';,./{}|\":<>?";
for (var i = 0; i < document.formname.fieldname.value.length; i++) {
if (iChars.indexOf(document.formname.fieldname.value.charAt(i)) != -1) {
alert ("Your username has special characters. \nThese are not allowed.\n Please remove them and try again.");
return false;
}
}
penso controllando keypress
eventi è non del tutto adeguato, poiché credo che gli utenti possano copiare/incollare nelle caselle di input senza attivare la pressione di un tasto.
Quindi onblur
è probabilmente un po 'più affidabile (ma è meno immediato).
Per fare veramente caratteri sicuri che non si desidera non sono entrati in caselle di input (o textarea, ecc), penso che sarà necessario
keypress
(se si vuole dare un feedback immediato) eonblur
,Gli esempi di codice nelle altre risposte funziona bene per fare i controlli lato client (basta non fare affidamento solo sul controllo keypress
eventi), ma, come è stato sottolineato nella risposta accettata, un server il controllo del lato è realmente richiesto.
L'input di limitazione non è necessariamente restrittivo, potrebbe essere l'inserimento di numeri di telefono, codici postali, date, ecc. Ma +1 al consiglio per raddoppiare il controllo sul lato server! – PhiLho