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
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
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
da richiamare così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>
come vedi ho associato la funzione anche all'evento onblur per controllare anche quando uno fa copia e incolla :gren:codice:<input type="text" name="numero" onkeyup="ControlloNumero(this)" onblur="ControlloNumero(this)">
famme sape'
![]()
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?
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
grazie della segnalazionecodice: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 a te della pronta risposta, anche xchè mi stavo un pò scervellando per modificarla... ma evidentemente non sei a caso un membro senior :gren:![]()
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} }
E non funziona?? :master:
a me pare giusto...
se vuoi ti butto giù come farei io (mi piaccione le Regular Expression :gren:
ma mi pare che il risultato sia lo stessocodice: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 }
si anche la mia funziona, ma la tua è + elegante![]()