Newsgroup: it.comp.lang.javascript
Titolo: Validazione input proveniente da promtbox

ragazzi sto a diventare scemo.
Ho una promptbox, ed ho bisogno di asicurarmi che l'input dell'utente 
sia numerico e compreso in determinati valori.
Avevo messo a punto questa robaccia:
function promptBox(asmLink, asmMessage) {
    var answer = window.prompt (asmMessage,'');
    if(answer!=null) {//Controllo che il campo non sia vuoto
       alert('OK');
       while(typeof(answer)!="number") { //Finchè l'input non è numerico
          alert('Must be a number between 0 and 4 ' + answer);
          answer = window.prompt(asmMessage,'');
       }
       asmLink.href += '&setto='+answer;
    } else {//Il campo è vuoto
       alert('Empty');
    }
}
ma nulla da fare.
Il link che chiama la funzione è fatto in questo modo:
<a href="admin.php?module=nomemodulo" onclick="return promptBox(this, 
'messaggio');">Click here</a>
In particolare, ho estrema difficoltà a capire come diamine validare 
l'input della promptbox.
Non riesco a trovare nulla in giro. Quel typeof(variabile) sembra essere 
puntualmente ignorato.
tenete presente che come browser di test sto usando Firefox.
Grazie mille.
P.S. non provate il codice perchè va in una sorta di loop infinito :(

 Non riesco a trovare nulla in giro. 
:-O sopra fa un controllo abbastanza generico. Se ti serve piů preciso io
ho cercato "Numerico" in questo newsgroup e compare dituttodipiů:
 
http://makeashorterlink.com/?K21D5261C
-- 
"e mai che mi sia venuto in mente
 di essere piů ubriaco di voi
 di essere molto piů ubriaco di voi"
									  F.D.A.

  
http://makeashorterlink.com/?K21D5261C
heh, come darti torto?
Come ho detto in un altro post, non ci sto tanto con la testa in questo 
perioro. La ricerca la facevo ma con parametri assurdi :)
Grazie

 funzionare. Se qualcuno nota errori per piacere me lo faccia sapere :)
trovato io l'inghippo. L'utente è obbligato a inserire un valore 
numerico per non far apparire pià il prompt.
Se clicca su annulla, il prompt riappare.
Allora ho rivisto e corretto come segue
function promptBox(asmLink, asmMessage) {
    var answer;
    while(!answer) {
       answer=prompt(asmMessage,'');
       if(isNaN(answer) || answer>4 || (answer != null && 
answer.isEmpty())) {
          alert('Must be a number between 0 and 4: ' + answer);
          answer=null;
       } else if(answer == null) {   //Se l'utente preme annulla
          return false;
       }
    }
    asmLink.href += '&setto='+answer;
}
//Aggiunge un metodo alla "stringa"


Movie ManiacŽ ha scritto:
[CUT]
[INIZIO MODALITA' CHIEDO PERDONO!]
ho scordato di chiedere cos ane pensate.
[FINE MODALITA' CHIEDO PERDONO!]

 funzionare. Se qualcuno nota errori per piacere me lo faccia sapere :)
Provato con valore -33434.32314534233243 ? A naso te lo valida, ti va bene?
(per questo anziché isNaN forse ti converrebbe usare una function tra
quelle proposte in passato in questo newsgroup. io ne avevo postata una che
teneva conto anche dei decimali [gli indicavi quanti accettarne] se non
ricordo male, ma ne sono state proposte a iosa...)
-- 
"Run rabbit run
 dig that hole, forget the sun
 and when at last the work is done
 don't sit down, it's time to dig another one"
									    P.F.

 ricordo male, ma ne sono state proposte a iosa...)
A me serve che sia proprio un intero compreso tra 0 e 4, il dilemma č 
questo qua. Quindi ho risolto cosě
while(!answer) {
    answer=prompt(asmMessage,'');
    if(isNaN(answer) || (answer<0 || answer>4) || (answer != null && 
answer.isEmpty())) {
       alert('Must be a number between 0 and 4: ' + answer);
       answer = null;
    }
}
String.prototype.isEmpty=function(){return 
this.replace(/\s/g,"").length==0;}
P.S. esiste un sito comune del NG o delle FAQ? Queste cose potrebbero 
essere materia da FAQ :D

 essere materia da FAQ :D
No
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 questo newsgroup.
e so proprio de coccio eh :)
Ok, capito, adesso ho risolto cosě
asmLink.href += '&setto='+Math.round(answer);
Il problema che mi hai evidenziato, era nascosto dal fatto che il 
controllo sul tipo di input lo effettuo anche via php.
Qui infatti mediante type casting costringo il valore passato ad essere 
un intero, e poi controllo anche che sia compreso in un determinato 
intervallo, altrimenti termino lo script con unmessaggio di errore.
Paranoia la mia?
Mah, il web č pieno di idioti che le provano tutte per rompere le "uova 
nel paniere" alla gente che lavora. Quindi benvenga il doppio controllo :)
Ciao e grazie

 Paranoia la mia?
assolutamente no, sarebbe da pazzi basarsi solo sul client-side, te lo
aggirano in 1000 modi...client-side serve per evitare inutili salti al
server, ma il server deve *SEMPRE* rivalidare tutto.
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.