Računanje sa decimalnim brojevima

Kao ispomoć sebi i svojim kolegama stočarima, pokušavam izraditi PHP web aplikaciju za izradu obroka za mliječne krave…

link na radnu verziju

Iz razumljivih razloga, već vidim probleme sa računanjem decimalnih inputa jer nije za očekivati da će svi koristit decimalnu točku umjesto zareza, unatoč upozorenju koje ću istaknuti.

  1. Postoji li način da se unešeni decimalni zarez automatski konvertira u točku?
    2.Ostale primjedbe koje uočite…

Hvala

Pa ne samo to, nego će ti tisućice upisivati s razmacima, točkama, zarezima… I mnogo drugih čuda.

Kreni s regularnim izrazima kako bi ograničio što si voljan prihvatiti, a kad jednom znaš što imaš, lako je izraditi kakav algoritam koji će obaviti zamjene zareza u točke i dr.

Također si možeš proučiti i malo eksperimentirati sa scanf funkcijom:

http://www.php.net/manual/en/function.sscanf.php

preporučenim lekcijama ću se ipak vratiti tek u nekoj v2 verziji

hvala

Meni ovo radi OK.
Automatski zareze pretvara u točke i dopušta samo brojke.

<script>
function allow_numeric(obj){
	if (/[^0-9.]/i.test(obj.value)) {
	obj.value=obj.value.replace(/[^0-9.]/g,'');
	obj.value+='';
	obj.focus();}
}
</script>


<input name="c0" value="" size="10"
  onkeyup="this.value = this.value.replace(',', '.');allow_numeric(this);">

Zna li netko kako prepraviti ovu skriptu tako da ne dopušta više od jedne decimalne točke?

Ovako nešto?

<script>

function allow_numeric(obj){

    obj.value = obj.value.replace(',','.');
  
    var timer = window.setTimeout(function(){
         if(!/^[0-9]+(\.[0-9]{1,2})?$/.test(obj.value)){
            obj.value = obj.value.replace(/[^0-9]/g,'');       
        }
    }, 2000);

    obj.onkeydown = function(){
        window.clearTimeout(timer);
    }    

} 
</script>

<input name="c0" value="" size="10"  onkeyup="allow_numeric(this);">

Nisam još isprobao u konkretnoj aplikaciji, ali izgleda da je to to.
Hvala, klikam reputaciju :slight_smile:

Fala, javi ako di zapne.