Newsgroup: it.comp.lang.javascript
Titolo: Controllo input solo cifre

Potreste suggerirmi un JS che ammette solo cifre in un tag INPUT?
Mi serve controllare che le 4 parti del codice ISBN siano solo
composte da cifre:
<INPUT type="text" name="isbn_nazione" size=2 maxlength=5>-
<INPUT type="text" name="isbn_editore" size=3 maxlength=6>-
<INPUT type="text" name="isbn_titolo" size=4 maxlength=6>-
<INPUT type="text" name="isbn_controllo" size=1 maxlength=1>
Inoltre ho un campo che acquisisce un titolo di libro, e voglio che si
inseriscano solo lettere o accenti: che JS potrei mettere?
<TEXTAREA name="titolo" rows=2 cols=56></TEXTAREA>
Grazie,
Mhaxx
P.S. non ho idea, ma lo chiedo cmq.. esistono JS già fatti che
controllano gli input, per es. esistono JS che veficano che un
indirizzo e-mail inserito dall'utente sia "corretto" (es. che abbia un
TLD fra quelli possibili, la chiocciolina, senza spazi, etc)? così
pure: esiste un JS per controllare se un codice ISBN è ammissibile?

 pure: esiste un JS per controllare se un codice ISBN è ammissibile?
esistera` se qualcuno lo ha fatto, per trovarlo suggerisco il metodo
classico: cercare.
-- 
begin  .signature-anti-MSOE
Oramai che i baci tuoi piu` non mi sazian
cerchero` un'altra donna dentro ai sogni di Tarzan
end

garbano.
Forse sarebbe meglio che appena l'utente digita un carattere non
consentito gli viene fuori un msg di errore e cmq quel carattere NON
viene scritto nel campo.
Faresti la gentilezza di dirmi cosa devo mettere in questo caso?
Tieni presente che per il campo ISBN è possibile inserire SOLO cifre,
null'altro, mentre nel campo titolo è possibile inserire.. mmm, forse
sbaglio a dire che bastano le lettere, perchè spesso ci sono
punteggiature nel titolo e magari anche numeri (es. "Sport nel
2003").. quindi l'unica cosa che voglio impedire è l'inserimento di
lettere tipo à,è,é,ì,ù.. e tutte quelle accentate in genere, perchè
voglio che vengano solo accettare quelle nella forma x'. Mi sa che
questo non è un filtro semplice da realizzare, come si fa ad escludere
tutte le lettere accentare del mondo (magari anche non ita)?
Bah, fammi sapere..
Grazie tante, ciao.
Mhaxx

}
Il problema (se di problema si vuol parlare) č che devo elencare tutti
i segni di punteggiatura ammissibili e cmq in generale hai sempre
paura di dimenticare qualche carattere che puň servire.. l'ideale
sarebbe poter dire che non accetta lettere accentate, ma mi sa che
anche in questo caso non č possibile dare una descrizione se non per
elencazione, giusto? Non c'č un modo per dire "tutte le lettere
accentate"?
Mhaxx

Ti chiedo un'altra cosa al volo: nel mio form ho INPUT, TEXTAREA,
SELECT, etc e vorrei che quando viene premuto il pulsante "INVIA" un
JS controllasse se l'utente ha cambiato qualcosa nei campi (alcuni
sono INPUT text, quindi vuoti, altri sono SELECT e hanno un OPTION di
default). Se almeno uno è stato modificato allora può partire la FORM,
altrimenti vorrei che non succedesse nulla, cioè non venisse chiamata
la pagina specificata nella action, e anzi che ci fosse un msg a video
di errore.
E' possibile fare questo? Ma soprattutto, come? Intendo dire: bisogna
costruire una funzione JS che verifica per ogni campo se è rimasto al
valore di default oppure c'è qualche soluzione più elegante, ad es. mi
viene in mente che ogni campo, se cambiato di valore può cambiare una
variabile globale JS che dopo viene testata all'atto dell'INVIO..
fantascienza? :-)
Mhaxx

*dibattito fine a se stesso*
E' da quando usavo Netscape 2.01 che dobbiamo risolvere "problemi" del genere.
Se avessimo
<input type="number" />
<input type="date" />
oppure
<input type="text" valid="/[^0-9]/g" />
non sarebbe piů figo?
Anziché star dietro ad aggiungere tremila eventi e tag e css e altro, il W3C potrebbe anche fare qualcosa di realmente *utile*, no?
Alex
-- 
___________________________________________________________
a p bertolini
"Se Dio č perfetto, perché ha creato le funzioni discontinue?"
#ICQ: 10681264
(
www.webwarrior.org
)

 questa invece, scusami, e` abbastanza una cazzata.
:-(
Okay.

Tranquillo, non me la sono presa. Volevo solo essere un po' provocatorio.
PS: non sapevo che MS fosse uscita dal W3C!
Alex.
-- 
___________________________________________________________
a p bertolini
"Se Dio è perfetto, perché ha creato le funzioni discontinue?"
#ICQ: 10681264
(
www.webwarrior.org
)

Mettiamo di avere un TEXTAREA e una SELECT:
<FORM action="risultati.php" method="post" name="ricerca">
  <TEXTAREA name="titolo" rows=2 cols=56></TEXTAREA>
  <SELECT size="1" name="acquistabile">
    <OPTION value=1 selected>Sě</OPTION>
    <OPTION value=0>No</OPTION>
  </SELECT>
  <INPUT type="submit" name="submit_ricerca" value="Cerca">
</FORM>
Dovrei mettere una cosa del tipo:
<INPUT type="submit" name="submit_ricerca" value="Cerca"
onClick="controllo();">
function controllo()
{
  with (document.forms['ricerca'])
    if (titolo.value == "" AND acquistabile.value == 1)
      alert("Non hai compilato il FORM: fallo!");
}
Ma come faccio ad inibire la chiamata della action="risultati.php"?
Mhaxx

>  alert("'zzo fai?");
Ho notato che in IE il titolo della finestra è Microsoft Internet
Explorer, mentre in Mozilla è una roba tipo JavaScript Application..
che fa molto brutto: si può intervenire su quel testo?
Altra cosa: il testo della finestra è allineato a sx, è possibile
centrarlo?
Grazie, ciao.
Mhaxx

 if ( (tit == '') && ( acq == '1') ) {
Non esiste una cosa più generica, tipo..
if (tit == valore_selected_di_titolo && acq ==
valore_selected_di_acquistabile)
Cioè, non è possibile con JS risalire alla OPTION "selected", o al
valore iniziare di un INPUT text..?
Mhaxx
P.S. esiste una funzione JS che faccia il trim di una stringa, cioè
che tolga gli spazi? mi serve perchè se faccio tit == '' e tit è uno
spazio inserito accidentalmente dall'utente, il form viene inviato!

quello. Come la vedi?
Mmm, ci sto pensando.. quasi quasi.. ho dato un'occhiata e la tabella
ASCII è divisa in una prima metà (standard) ed una seconda (estesa).
Da quel che dici escludere tutta la seconda, giusto?
Ho guardato e taglierei fuori simboli per lo più..
Anyway: da JS come faccio a dire "carattere con codice ASCII > 127"?
Mhaxx

 centrarlo?
No e... no :-(
Puoi centrare il testo inserendo degli spazi o dei \t, ma è una cosa un po' spannometrica.


 della chiassosa ed onerosa rumenta di Bill Gates.
"Quoto", come direbbero altrove. :) 
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 il W3C potrebbe anche fare qualcosa di realmente *utile*, no?
La mia risposta si associa a quella del buon Balestra.


}
Ho dato un'occhiata alle RE e ho visto che (per completezza) forse
dovrei usare /s come patter del trim, dove /s equivale a  [
\f\n\r\t\v].
Non so però cosa siano \f (form feed) e \t (vertical tab)..
Mhaxx

 di nulla per quanto riguarda javascript.  :-?
LOL ^_^
Forse mi sono spiegato male.
Il vantaggio di programmare in XHTML rispetto al vecchio HTML e' che 
puoi aggiungere attributi e tag che non erano inizialmente contemplati.
La cosa puo' anche essere fatta senza modificare le aggiunte al DTD 
relativo (di fatto, funziona lo stesso sia su IE - ma questa non e' una 
novita' - sia su Mozilla), ma in quel mondo non e' - giustamente - piu' 
un documento XHTML validabile (la DTD dice una cosa, il source un altra, 
e quindi il validatore ti segnala errore).


 e il tab (il normale tab)
Mi sono sbagliato, \t è il tab (ok), io non sapevo cos'è il vertical
tab (\v)..
Mhaxx