Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: Validare input text

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    99

    Validare input text

    Ciao ragazzi, non capisco nulla di Javascript conosco bene il PHP.
    io devo controllare che l'input inserito sia un numero e non un testo.
    Mi spiegate il codice da mettere in Javascript. Posto il codice:
    codice:
    <script language=javascript>
    	function verifica()
    	{
    		if (time.text != " " && parseInt(time.value) != time.value)
    		{	alert("Valori non corretti");
    			time.focus();
    		}	
    		return;
    	}
    </script>
    <?php
    $tempo = array("secondi","minuti","ore","giorni","settimane","mesi");
    		echo "<table width=100% border=1>";
    		echo "<form action=regole.php method=post>";
    		echo "<tr style={background-color:red}><th >Regola</th><th>Opzione di Blocco</th></th>";
    		for($i=0; $i < count($regole); $i++)
    		{
    			echo "<tr>";
    			echo "<td width=80%>$regole[$i]</td>";
    			echo "<td width=20%>CHI:<select name=opzioni[]><option>Sorgente</option><option>Destinazione</option></select></br></br>";
    			echo "COME: <select name=opzioni[]><option>In Entrata</option><option>In Uscita</option><option>Entrambi</option></select></br></br>";
    			echo "Tempo: <input id=time type=text size=3 name=opzioni[]><select name=opzioni[]>";
    			for($j=0; $j < count($tempo); $j++)
    				echo "<option>$tempo[$j]</option>";
    			echo "</select>";
    			echo "</td>";
    			echo "</tr>";
    		}
    		echo "<tr style={background-color:red} ><td colspan=2 align=center><input type=submit name=conferma value=Conferma onclick=verifica();><input type=reset name=reset value=Reset></td></tr>";
    		echo "</form>";
    		echo "</table>";
    ?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    15
    Non ti conviene usare parseInt. Se inserisco tipo "1547utjg" viene comunque considerato come numero.

    Io di solito uso:
    Javascript:
    function PressOnlyNumber()
    {
    var num = window.event.keyCode;
    switch(num)
    {
    //tastiera principale
    case 48: return true;
    case 49: return true;
    case 50: return true;
    case 51: return true;
    case 52: return true;
    case 53: return true;
    case 54: return true;
    case 55: return true;
    case 56: return true;
    case 57: return true;
    //tastiera a destra
    case 96: return true;
    case 97: return true;
    case 98: return true;
    case 99: return true;
    case 100: return true;
    case 101: return true;
    case 102: return true;
    case 103: return true;
    case 104: return true;
    case 105: return true;
    }
    }

    html
    <input type="text" onkeydown="JavaScript: return CheckNumberKeyPressed();">

    se vuoi che vengano inseriti anche i numeri negativi, le virgole etc devi aggiungere case allo switch.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    99
    ottimo veramente

    voglio un altro aiuto
    siccome ho tutti gli input con lo stesso id=time, come faccio a controllarli tutti perchè così mi controlla solo il primo.

    se aggiungo al nome time un contatore es. time1,time2. Poi in javascript come faccio recuperarli

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    99
    up up

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    15
    se hai tutti i campi con lo stesso ID il browser dovrebbe sbombarti.
    In HTML non puoi avere due oggetti distinti con lo stesso ID.
    Cmq se devi fare lo stesso controllo dell'inserimento di soli numeri basta che aggiungi "onkeydown='......" su tutti i campi.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    99
    Ho provato il codice che mi hai dato ma non mi funziona.
    Ho aggiunto un default: alert("inserire numeri") per gestire tutti gli altri casi.
    Sia se digito un numero che una lettera esce l'alert. Cosa può essere?

  7. #7
    usa questa
    codice:
    function soloNumeri(id){
     var valore=document.getElementById(id).value
     valore=valore.replace (/[^\d\/]/g,'')
     document.getElementById(id).value=valore
    }
    la richiami cosi
    codice:
    <input type="text" id="numero" name="numero" value="" size="10" maxlength="10" onblur="soloNumeri('numero')" onkeyup="soloNumeri('numero')" />

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    15
    Ho controllato la funzione che uso:non ho postato una cosa sorry. Devi aggiungere "return false;"
    nella funzione dopo lo switch:
    function PressOnlyNumber(){
    var num = window.event.keyCode;

    switch(num) {
    case 49: return true; case 50: return true; case 51: return true;
    case 52: return true; case 53: return true; case 54: return true;
    case 55: return true; case 56: return true; case 57: return true;
    case 96: return true; case 97: return true;
    case 98: return true; case 99: return true; case 100: return true;
    case 101: return true; case 102: return true; case 103: return true;
    case 104: return true; case 105: return true;
    }
    return false;
    }

    così dovrebbe andare. (su IE di sicuro)

  9. #9
    Originariamente inviato da .NET Addict
    Visto che mi serviva e non ho trovato una funzione pronta in rete che facesse tutto cio' che volevo, ne ho scritta una smanettando con js

    Questa consente di usare anche decimali (specificando anche il numero di cifre dopo la virgola ) e negativi.
    Non ho capito come funziona.
    comunque potresti usare le regular expression come viene fatto qui.

    http://forum.html.it/forum/showthrea...30#post8900330



  10. #10
    Originariamente inviato da .NET Addict
    Le regular expressions possono VALIDARE un input DOPO la digitazione, la mia funzione FILTRA l'input consentendoti di inserire soltanto quanto desiderato (un numero intero positivo o negativo, oppure un decimale positivo o negativo col numero di cifre decimali che desideri).

    Non mi funziona mi fa inserire anche le lettere. provata su IE6 XPPro SP2

    preferisco usare le regExp.
    Per lo stesso conrtollo usi un'istruzione al posto di n.
    è più performante

    Con questa per esempio inserisci solo numeri interi
    codice:
        function soloNumeri(id){
         var valore=document.getElementById(id).value
         valore=valore.replace (/[^\d]/g,'')
         document.getElementById(id).value=valore
        }
    
        <input type="text" id="numero" name="numero" value="" size="10" maxlength="10" onblur="soloNumeri('numero')" onkeyup="soloNumeri('numero')" />




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.