Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Controllo lato client che non va

    Questo il codice:
    codice:
    function ricalcola(valore) {
    		if(isNaN(valore))
    			window.alert('Errore: inserire solo numeri.\rPer i numeri decimali usare il \".\"');
    		else
    			form1.Totale.value = Number(form1.Dr.value);
    			form1.Totale.value = Number(form1.Totale.value) + Number(form1.R.value);
    			form1.Totale.value = Number(form1.Totale.value) + Number(form1.V.value);
    			form1.Totale.value = Number(form1.Totale.value) + Number(form1.S.value);
    			form1.Totale.value = Number(form1.Totale.value) + Number(form1.A.value);
    			form1.Totale.value = Number(form1.Totale.value) + Number(form1.D.value);
    			form1.Totale.value = Number(form1.Totale.value) + Number(form1.Re.value);
    			form1.Disponibili.value = Number(form1.Monte.value) - Number(form1.Totale.value);
    	}
    In pratica richiamo questa function su ogni campo in questione. In modo che se si mette un numero valido, viene effettuata la somma dei campi.
    Fin qui tutto ok.
    Io però vorrei che quando si inserisce un valore errato dopo che si preme "OK" sull'alert, si azzerasse il campo dove è stato messo l'errore. Ma ciò non funziona.
    Cambiando i parametri passati alla function, si può aggiungere il nome del campo? Come si fa a richiamare dinamicamente il nome del campo?
    Mi spiego, se trasformo la funzione in ricalcola(valore, campo) posso associare all'evento onChange="ricalcola(form1.Dr.value, Dr);"
    Ma in modo che "Dr" (il nome del campo) sia preso dinamicamente? Non so, magari esiste una funzione "getName" boh.. non so...
    Grazie mille, spero di essermi spiegato...


    C'è un altro particolare che mi sfugge. Come mai quando si verifica l'evento di errore, appare giustamente la finestra di alert, ma quando dò ok, esegue ugualmente il resto della funzione, ritrovandomi quindi con il campo Monte e PuntiDisponibili uguali a NaN? Non si blocca lì la funzione?
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  2. #2
    Utente di HTML.it L'avatar di Igor70
    Registrato dal
    Aug 2002
    Messaggi
    131
    Se devo dire la verita ho capito ben poco di quello che tiserve, mi pare che tu abbia bisogo di cose tipo

    document.getElementsById("idDelTuoElemento").value
    o
    document.getElementByName("idDelTuoElemento").valu e

    per la prima domanda e forse di usare un break; e/o un return false; per la seconda.

    Spero di aver capito ma la domanda è un po contorta, o forse sono scemo io

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Test:
    codice:
    <script>
    function ricalcola(obj) {
    		if(isNaN(obj.value))
    			window.alert('Errore: inserire solo numeri.\rPer i numeri decimali usare il \".\"');
    		else
    			with (obj.form) {
    				Totale.value = 
    					Number(Dr.value) +
    					Number(R.value) +
    					Number(V.value) +
    					Number(S.value) +
    					Number(A.value) +
    					Number(D.value) + 
    					Number(Re.value);
    				Disponibili.value = 
    					Number(Monte.value) - 
    					Number(Totale.value);
    			}
    	}
    </script> 
    <form>
    dr<input type=text name="Dr" value="0" onchange="ricalcola(this)">
    
    r<input type=text name="R" value="0" onchange="ricalcola(this)">
    
    v<input type=text name="V" value="0" onchange="ricalcola(this)">
    
    s<input type=text name="S" value="0" onchange="ricalcola(this)">
    
    a<input type=text name="A" value="0" onchange="ricalcola(this)">
    
    d<input type=text name="D" value="0" onchange="ricalcola(this)">
    
    re<input type=text name="Re" value="0" onchange="ricalcola(this)">
    
    dis<input type=text name="Disponibili" value="0">
    
    mon<input type=text name="Monte" value="0" onchange="ricalcola(this)">
    
    Totale<input type=text name="Totale" value="0">
    </form>
    La seconda parte non l'ho capita nemmeno io...
    Chi valorizza il campo Monte? quale errore? quale finestra?

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  4. #4
    Grazie a tutti
    Il mio errore era che non avevo raggruppato le operazioni dell'if dentro le {}.
    getElementbyid era quello che cercavo.
    Grazie ancora.
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.