Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Cina76
    Registrato dal
    Aug 2002
    Messaggi
    203

    Separare le migliaia in javascript

    Salve a tutti mi servirebbe una funzione javascript che nn permetta all'utente di scrivere in una input type text una cifra che abbia i valori decimale (es: 150,10) ed inoltre mi separi la cifra per le migliaia (es:1.000).
    Grazie a tutti
    Ciao Andrea

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

    non credo che esista una funzione che formatti i numeri con il punto come separatore di migliaia... spero che qualcuno possa smentirmi
    potresti fare un a funzioncina che controlla se si inseriscono numeri (tranne gli zeri iniziali) e che crei la stringa che rappresenta il numero con il punto per le migliaia...
    una cosa tipo questa
    codice:
    <script language="javascript">
    function ControlloNumero(obj){
    	valore = obj.value
    	RE = /[^\d]/g
    	valore = valore.replace(RE,'')  //elimino tutto ciò che non è numerico
    	RE = /^0+/g
    	valore = valore.replace(RE,'')  //elimino gli zeri iniziali
    	x = valore.length
    	da=0
    	nuovovalore=''
    	while(x>3){
    		nuovovalore+=valore.substr(da,3)+'.'
    		da+=3
    		x = valore.substr(da).length
    	}
    	nuovovalore+=valore.substr(da)
    	obj.value=nuovovalore
    }
    </script>
    da richiamare così
    codice:
    <input type="text" name="numero" onkeyup="ControlloNumero(this)" onblur="ControlloNumero(this)">
    come vedi ho associato la funzione anche all'evento onblur per controllare anche quando uno fa copia e incolla :gren:
    famme sape'

  3. #3
    ho usato anche io questa utile funzione, solo che alla fine vengono fuori numeri come 123.4 ,mentre il separatore delle migliaia dovrebbe far si che il numero sia 1.234

    questo avviene perchè la funzione conta 3 cifre da sinistra e poi inserisce un punto, mentre per creare correttamente le migliaia dovrebbe contare 3 cifre da destra

    sapete ome si deve modificare suddetta funzione?

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

    he he he :gren: sono stato un po' pirla ... però Cina76 non mi aveva più detto niente e non ho controllato...
    visto che ci sono riduco anche le righe di codice
    codice:
    function ControlloNumero(obj){
      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)
      }
      obj.value=valore+nuovovalore
    }
    grazie della segnalazione

  5. #5
    Grazie a te della pronta risposta, anche xchè mi stavo un pò scervellando per modificarla... ma evidentemente non sei a caso un membro senior :gren:

  6. #6
    scusa ma ho un altro problema. Questa funzione la uso in textbox che devono poter ospitare campi anche negativi, ma come è adesso la funzione non permette di inserire il carattere - e cmq poi non separarebbe correttamente le migliaia, mi potresti aiutare a modificare la funzione per ammettere il campo - ?

    io ho pensato a questo codice

    codice:
    function ControlloNumero(obj){
    if (obj.value.substr(0,1)=="-")
    	{var numero = "negativo"}
    else {var numero = "positivo"}
      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}
    }

  7. #7
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    E non funziona?? :master:
    a me pare giusto...
    se vuoi ti butto giù come farei io (mi piaccione le Regular Expression :gren:
    codice:
    function ControlloNumeroX(obj){
      var segno='' 
      if(/^-/.test(obj.value))segno='-'
      obj.value=obj.value.replace(/^-/,'')
      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)
      }
      obj.value=segno+valore+nuovovalore
    }
    ma mi pare che il risultato sia lo stesso

  8. #8
    si anche la mia funziona, ma la tua è + elegante

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.