Visualizzazione dei risultati da 1 a 7 su 7

Discussione: separatore di migliaia

  1. #1

    separatore di migliaia

    Buongiorno a tutti, volevo un consiglio (e magari un aiuto ) circa una mia esigenza:

    Ho dei campi di un form destinati a raccogliere dei valori numerici, mi piacerebbe poter visualizzare nel campo il numero con un punto separatore ogni 3 cifre (che magari si inserisse automaticamente ogni 3 cifre digitate) ma cosa più importante che in fase di submit fosse inviato come numero senza punti.

    Non so se sono stata sufficientemente chiara...

    Comunque che ne dite, esiste qualche script bello e pronto che affronti questa richiesta?

    Grazie a tutti

    AleX

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Esiste qualche script pronto. Ne sono stati proposti diversi nel forum.
    Forse sono anche riportati fra i "link utili", altrimenti devi aspettare ceh la ricerca venga riattivata.

    Poi per pulire il campo prima della spedizione:
    <form ... onsubmit="puliscicampi();">

    dove pouliscicampi fara` semplicemente:
    document.NOMEFORM.NOMECAMPO.value = document.NOMEFORM.NOMECAMPO.value.replace(/\./g,"");

    su tutti i campi che ti interessano.

    Tieni presente che il punto serve per la separazione dei numeri decimali, mentre la virgola genera un errore, in tutti i linguaggi di programmazione.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao AleXXandra,

    esisterà sicuramente qualcosa di già pronto... io ho fatto questo
    codice:
    <script language="javascript">
    function ControlloNumero(obj){
      var numero = "positivo";
      if (obj.value.substr(0,1)=="-") numero = "negativo";
      valore = obj.value.replace(/[^\d]/g,'').replace(/^0+/g,'');
      nuovovalore='';
      while(valore.length>3){
        nuovovalore='.'+valore.substr(valore.length-3)+nuovovalore
        valore = valore.substr(0,valore.length-3)
      }
      if (numero=="negativo")obj.value="-"+valore+nuovovalore
      else obj.value=valore+nuovovalore
    }
    </script>
    <form onsubmit="this.NomeText.value=this.NomeText.value.replace(/\./g,'');">
    <input type="text" name="NomeText" value="" onkeyup="ControlloNumero(this)">
    <input type="submit" value="submit">
    </form>
    Accetta numeri interi positivi o negativi, le migliaia vengono separate dal punto e all'onsubmit elimino tutti i punti

  4. #4
    Bravissimo willybit!!!
    Hai capito ciò di cui avevo bisogno ed in un batter d'occhio hai trovato la soluzione! Complimenti!

    In verità però il numero che devo inserire è un costo quindi,(maledetti euro) occorrerebbe prevedere l'obbligo di inserire anche due valori decimali...

    Si può fare?

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    grazie per il bravissimo, troppo buona

    per farlo andare anche con la virgola ce vo' na modifica
    codice:
    <script language="javascript">
    function ControlloNumero(obj){
    	var segno = '';
    	if (obj.value.substr(0,1)=='-') segno = '-';
    	obj.value=obj.value.replace(/\./g,',');
    	var arr = obj.value.split(',');
    	valore = arr[0];
    	valore = valore.replace(/[^\d]/g,'').replace(/^-/g,'').replace(/^0+/g,'');
    	nuovovalore='';
    	while(valore.length>3){
    		nuovovalore='\''+valore.substr(valore.length-3)+nuovovalore
    		valore = valore.substr(0,valore.length-3)
    	}
    	obj.value=segno+valore+nuovovalore
    	if(arr.length>1)obj.value=obj.value+','+arr[1]
    }
    </script>
    <form onsubmit="this.NomeText.value=this.NomeText.value.replace(/'/g,'').replace(/,/g,'.');">
    <input type="text" name="NomeText" value="" onkeyup="ControlloNumero(this)">
    <input type="submit" value="submit">
    </form>
    come separatore di migliaia ho usato l'apice (il punto si confondeva con la virgola)
    la virgola può essere inserita sia come virgola che come punto ma verrà visualizzata sempre come virgola.
    Seguendo quello che giustamente dice Mich_ al submit elimino i separatori di migliaia e sostituisco la virgola col punto

  6. #6
    Ok willybit, la mia stima nei tuoi confronti sta crescendo esponenzialmente.
    Il tuo codice tuttavia non funziona perfettamente in quanto l'apostrofo tra due altri apostrofi si comporta male.
    L'efficacia è comunque facilmente verificabile utilizzando un altro carattere come separatore delle migliaia (ad esempio °).
    Comunque grazie ancora per la gentile collaborazione
    Alla prossima,
    AleX

  7. #7
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    grazie per la stima AleXXandra

    vedi... prima di postare qualcosa (se non è troppo semplice) lo testo in locale...
    l'apice da problemi pekké evidentemente tu hai fatto copia e incolla dal mio post. Il forum interpreta e modifica alcune cose che si scrivono... in questo caso ha trasformato il mio '\'' in '''
    ti consiglio di fare il quote del messaggio e copiate il codice direttamente dalla textarea per averlo esattamente come l'ho scritto ;-)
    Ciao ciao e alla prossima

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.