Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    85

    validare un numero con decimali

    Buonasera.
    Vorrei validare un numero con decimali, cioe' verificare che non contenga doppi punti o doppie virgole( sia contigui che distanti fra loro), e, ovviamente, che sia un numero.
    In caso di errore vorrei anche un messaggio.

    Come ho letto in altri post vorrei richiamare la ruotine dall'evento onblur della text.

    Grazie anticipatamente dell' aiuto

    p.s.: ho trovato un'altro post del genere
    http://forum.html.it/forum/showthrea...readid=1038753
    ... ma non capito come fare :-(

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    <input type="text" onblur="if(!/^\d+((\.|,)\d{0,3})?$/.test(this.value)){alert('errore')}" />
    oppure
    <input type="text" onblur="if(!this.value.match(/^\d+((\.|,)\d{0,3})?$/)){alert('errore')}" />

    ci sono differenze ma non dovresti notarle nel caso specifico

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    85
    grazie Xinod :-) ... ma ho dimenticato di dire che la pagina è in asp :-(
    Da quello che ho letto sul forum dell'asp credo di aver capito che serve una ruotine in javascript da richiamare nell'evento onblur ... giusto ?

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ok, gran brutta cosa l' asp

    codice:
    <script type="text/javascript">
    <!--
    function checkNum(fld){
    	var rex=/^\d+((\.|,)\d{0,3})?$/
    	if(!rex.test(fld.value)){
    		alert('errore');
    		// fld.value='';
    	}
    }
    //-->
    </script>
    ...
    <input type="text" onblur="checkNum(this)" />
    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    85
    grazie Xinod perfetto.

    p.s. comincio a pensarlo anche io ... brutta cosa l'ASP
    p.s.2: equivalente di Replace in JS? ... ora cerco nei post ...ci sara' immagino

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    85

    ... fatto!

    con il codice di Xinod e completato con il replace
    ... forse puo' servire a qualcuno la ruotine completa

    <script type="text/javascript">
    <!--
    function checkNum(fld)
    {
    var stringa=fld.value
    replaced = stringa.replace(/\./g,''); // elimina tutti i punti

    var replaced2 = replaced
    replaced2 = replaced.replace(/\,/g,'.'); // sostituisce la virgola con il punto

    var rex=/^\d+((\.|,)\d{0,3})?$/ // verifica non ci siano altri caratteri oltrei numeri
    if(!rex.test(fld.value))
    //if(!rex.test(replaced2))
    {
    alert('Formato importo errato! Inserire senza separatore migliaia e solo la virgola separatore decimali');
    fld.value=''; // azzera la casella TextDueDec
    replaced2=''; // azzera la casella TextVal
    document.form1.TextDueDec.focus
    }
    document.form1.TextVal.value=replaced2 // replaced2 variabile con numero pronto per la scrittura nel DB
    }
    //-->
    </script>

    ....
    ....
    Questa text visualizza il numero come scritto dall'utente.

    <input name="TextDueDec" type="text" id="TextDueDec" tabindex="1" onchange="checkNum(this)"

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    213
    perchè a me in js non funziona facendo così:
    function ControllaInt(contr) {
    var n = 100000 ;
    if(!((document.getElementById("d").value >=0) && (document.getElementById("d").value <=n))) {
    alert("Sono ammessi solo numeri!");
    contr.value= "";
    }
    }

    <input type="text" id="d0" onBlur="ControllaInt(this)">



  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da tonz79
    perchè a me in js non funziona facendo così:
    function ControllaInt(contr) {
    var n = 100000 ;
    if(!((document.getElementById("d").value >=0) && (document.getElementById("d").value <=n))) {
    alert("Sono ammessi solo numeri!");
    contr.value= "";
    }
    }

    <input type="text" id="d0" onBlur="ControllaInt(this)">


    Inoltre il valore di un campo del form e' sempre di tipo stringa... non puoi confrontarlo direttamente con un numero

    prova:

    if(!((parseFloat(contr.value) >=0) && (parseFloat(contr.value) <=n))) {

    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    213
    function ControllaInt(contr) {
    if(!((document.getElementById("d").value >=0))) {
    alert("Sono ammessi solo numeri!");
    contr.value= "";
    }
    }

    <input type="text" id="d" onBlur="ControllaInt(this)">

    così funziona,ma ha un bag: non funziona x l'ultimo text al posto di onblur esiste qualche altra funzione che mi da subito l'alert senza che devo cliccare in un altro text x ricevere il controllo??

  10. #10
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    onchange potrebbe essere il gestore evento che stai cercando,
    scatta al variare del contenuto del campo
    senza attendere la perdita del focus

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 © 2025 vBulletin Solutions, Inc. All rights reserved.