Newsgroup: it.comp.lang.javascript
Titolo: funzione corretta ..risultato sbagliato

Ciao a tutti..scusatemi se disturbo, ma no riesco a far funzioanre 
corettamente una cosa
nel solito form, ho un campo che deve avere dei valori minimi, sotto i quali 
non posso andare....
quindi devo verificare che l'utente inserisca questi valori minimi
i minimali, vengono caricat da un archivio (la pagian lavor ai ASP ma i 
controlli li faccio lato client) e sono enlla forma numero-stringa
ho bisogno di far appareire un messaggi che mi consenta di avvertire 
l'utente dell'errore, ripulire il campo e riposizionarmici sopra per un 
nuovo inseriimento.
io ho fatto cosi...
<script language="javascript" src="fileesterno.js">
<form id="ordine" name="ordine"........>
.
.
.
.
<input type="text" value="" id="quantita" onChange="controlla(this.value, 
document.getElementByID('ord_min').value) ; return false;">
.
.il valore di questo campo è del tipo "72 bottiglie" oppure "36 bottiglie" 
ecc ecc
<input type="text" value="<%= cRec("ord_min") %>" id="ord_min">
<input type="submit">
nel file esterno di tipo *.JS....................
function controlla(vqta, vordmin)
{
//con questo dovrei splittare la stringa dividendo il testo dai numeri
var stringa_
stringa_ = Split(vordmin, " " );
vordmin =stringa_[0];
if (vqta < vordmin)
{
 alert("quantità insufficiente")
document.form['ordine'].elements['quantita'].value == ""
document.form['ordine'].elements['quantita'].setfocus == ""
}
}
function Split(StringToSplit, ChatToSplit)
{
return StringToSplit.Split(CharToSplit);
}
Sapreste dirmi dove si annida errore? perche il utto, non funziona o 
funziona a strattoni ..
per esempio a volte mi riconosce i numeri inferiori a 72 (o 36) altre volte 
no mi riconosce neanche i numeri sotto il 10
poi no riesco a capire se è giusta la funzione di split (brutalmente copiata 
da internet) che ho usato per estrapolare i dati...io avrei usato la 
funzione MID di VBScript, ma in javascript no l'ho trovata.
Vi ringrazio per l'aiuto
Emanuele

 funzione MID di VBScript, ma in javascript no l'ho trovata.
stringa.substr(inizio,numerodicaratteri)
Comincia a correggere il tutto, se non funziona ancora riposta quello che
hai scritto e l'errore rilevato (da browser Gecko cosě puoi vedere l'errore
esatto)
-- 
"e mai che mi sia venuto in mente
 di essere piů ubriaco di voi
 di essere molto piů ubriaco di voi"
									  F.D.A.

[CUT]
ciao Cristiano (dovrei pagarti una cena con tutti gli aiuti che mi dai)..
ti posto il codice corretto, copiando e incollando dalle pagine che uso e 
poi ti segnalo le anomalie
dalla pagina di controllo in JS
//Funzioni Javascriupt per il controllo dei moduli
function ControllaQuantita(vqta, vordmin)
{
var stringa_
stringa_ = Split(vordmin, " ");
vordmin = stringa_[0];
//alert("visualizza vordmin " + vordmin)
 if (vqta < vordmin)
 {
   alert("La quantità inserita è inferiore al minimo consentito per questo 
articolo");
   document.form['ordina'].elements['qta'].value= "";
   document.form['ordina'].elements['qta'].focus();
 }
}
function Split(StringToSplit, CharToSplit)
{
 return StringToSplit.split(CharToSplit);
}
nella pagina asp (se vuoi provare con html, sostituisci in ord_min i valori 
" 72 bottiglie" o "36 bottiglie"
<form  method="post" name="ordina" id="ordina">
   <td class="etichetteblu"><% If session("lingua") ="italiano" then 
%>Quantità : &nbsp; <% Else  %>Quantity :&nbsp; <% End If %>
  <input type="text" size="8" maxlength="8" value="" class="fixprice" 
name="qta" id="qta" onchange="ControllaQuantita(this.value, 
document.getElementById ('ord_min').value);" />
    <td class="etichetteblu"><% If session("lingua") ="italiano" then 
%>Ordine minimo : &nbsp; <% Else  %>Minimal order : &nbsp;  <% End If 
%></td>
     <td colspan="2"><% If Session("categoria")="rivenditore" then %>
 <input type="text" name="ord_min" value="<%= cRec("ord_min") %>" size="17" 
maxlength="15" disabled class="fixprice" />
 <input type="hidden" name="ord_min" id="ord_min" value="<%= cRec("ord_min") 
%>" />
ho fatto la seguente prova su un articolo:
l'alert precedente alla IF nel blocco JS era abilitato
inserisco 5...viene visualizzato l'alert e la procedura di blocca 
(correttamente)
senza refresh della pagina (ma io credo che sia necessario) inserisco 55 e 
il messaggio non viene visualizzato (sbagliato) ma il dato no viene inserito 
(corretto)
se disattivo l'alert precedente alla IF
no mi appaiono piu messaggi di errore anche se io scrivo valori bassi 
(inferiori a 72 o 36)
e la procedura carica i valroi senza segnalare l'errore
altra cosa: se io scrivo un valore errato e la procedura mi da messaggio di 
errore, riscrivendo il valore corretto e poi inviando il modulo, il dato non 
viene caricato (perquesto penso che ci voglia un refresh)
Grazie dell'attenzione
Emanuele 

 }
Prova un po'...
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 ControllaQuantita(this.qta.value,this.ord_min.value)"...>
ho provato, e sicuramente č meglio della mia soluzione, ma.....non funziona
ho provato a inserire valori bassi 5 6 7 e me li accetta ugualemnte....
pero ho fatto una prova...
ho scritto la chiamata di funzione sostituendo un valore fisso (72) a 
this.ord_min.value.....e funziona
queto ti dice niente?
magari sbaglia caricare quel valore o no lo divido bene e mi rimane sporco 
(con la parte dtringa successiva al numero)
dato che in realta la stringa mi arriva come "72 bottiglie"
com eposso usare la funzione string che mi hai detto prima? 
(stringa.substr(inizio,numerodicaratteri))
sarebbe corretto
ControllaQuantita(vqta, vordmin)
var stringa_;
stringa_ = vordmin.substr(1,2);
se volessi isolare il numero dalla parte letterale???
grazie
EManuele
ps: per la birra si puo fare se mi dici di dove sei (e se non sei troppo 
lontano ovviamente) 

 lontano ovviamente)
Stavo scherzando dai, figurati...
-- 
"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.

> del tipo if(parseInt(valore1)<parseInt(valore2)) ...
azz...proprio questo mi manca...
parseInt()
sara questo?
mo provo
Emanuele 

 Stavo scherzando dai, figurati...
ARRRGH! Sulla birra non si scherza!
:)
-- 
~Nando~ :-/__.oO
Apostolo della Prova

dimenticavo: la funzione split cosi come l'ho riportata, l'ho presa da qui:
http://pro.html.it/articoli/id_478/idcat_11/pag_3/pag.html
Emanuele 

 
http://pro.html.it/articoli/id_478/idcat_11/pag_3/pag.html
ROTFL !
"Anche in questo caso, la funzione Split() di VBScript è più comoda del
metodo split() dell'oggetto String di Javascript" E perché mai??? Usare una
function esterna è più comodo che avere il prototype nella stringa
stessa????
E che dire dei vari left (perché mai non ha anche pubblicato right o mid?
troppo difficile? :-/ ) che in vbscript sono 3 function (si chiamano così?)
diverse (assurdo visto che fanno la stessa cosa, basta cambiare i 2
parametri...)
Ma soprattutto la function proposta per il trim(), eccezionale, 
	        *E C C E Z I O N A L E*
Te ne propongo una, leggermente più compatta, sai, niente di che ...
function __pt_str_trim() {
 return this.toString().replace(/^\s*/, "").replace(/\s*$/, "");
}
 String.prototype.trim=__pt_str_trim;
ROTFL !! eccezionale, mi ha tirato sù una giornataccia!
(cazzo, vedo che c'è un "commenta", quasiquasi... ma no, lascio perdere ...
quasi quasi però ... ci penso!)
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

Comunque no riesco a capire perche no mi effettua il controllo....
maledizione....
suggeritemi qualcosa per impostare sta validazione
grazie
Emanuele 

 suggeritemi qualcosa per impostare sta validazione
ancora? e come mai? hai messo il parseInt?
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.

 -- 
SI l'ho messo, ma proprio non fa più nulla...sinceramente non capisco come 
un acosa cosi banale come una semplice IF possa dare tanti problemi....
mannaggia..deve solo controllare se un valore è valido

 quasi quasi però ... ci penso!)
 la qualita' dei contenuti di 
html.it
, IMHO, e' di un livello bassissimo
e non solo per quanto riguarda javascript
  il bello e' che se passi dal forum trovi i "guru" tanto pieni di se'
mah ...
  il bello (2) e' che questo articolo e' tratto da 
pro.html.it
,
PRO articoli di approfondimento mica cazzi ...
 lasciamo perdere va ...
 scusate lo sfogo [.. ci mettero' una cremina (cit.)]
-- 
La curva seno va all'infinito, o almeno fino alla fine della lavagna.
		-- Prof. Steiner

 }
Te ne dò una più compatta ;)
String.prototype.trim=function(){
	return this.replace(/\s+$|^\s+/g,"");
}
-- 
~ "When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

  scusate lo sfogo [.. ci mettero' una cremina (cit.)]
:-))) Chi č che ha detto questa cazzata di dimensioni epiche??? [mi suona
alla Allen cosě d'istinto...] Mi sembra quell'altra che ho letto stamattina
"una mela al giorno toglie il medico di torno, se hai una buona mira" ...


 Te ne dò una più compatta ;)
[CUT]
Sborone!! :-)


 "una mela al giorno toglie il medico di torno, se hai una buona mira" ...
  boh :) ... mi sa tanto di groucho marx
(non ti so dire dove l'ho letta ... sorry ...)
-- 
Tutte le madri vorrebbero che loro figlio diventasse Presidente, senza
pero' fare prima il politico.
		-- John F. Kennedy