Javascript Decimal Matematiksel İşlem
-
Merhaba arkadaşlar.
aşağıdaki görseldeki bir .net sayfam var.
Javascirpt ile peşinat kısmına girildiğinde otomatik olarak kalan tutar kısmına değer yazılıyor..Normalde decimal yani küsüratlı değerler C# için virgül (,) ile ifade ediliyor.
Ama hatalı da olsa Javascirpt tarafında ben nokta ile yaptırmak zorunda kaldım.
Zira kullanıcı nokta girmediğinde yani virgül girdiğinde küsürat olarak değerlendirmiyor.
Nedenini anlamadım henüz.
Neyse şu aşamada küsüratlı işlemlerimde hala hata var.
Bu konuda bana yardımcı olabilecek birileri var mı
İyi akşamlar.iki Javasript tetikleyicimiz var İlki==> onchange="javascript:TutarChange();"
function TutarChange() { var x = document.getElementById("txtTutar"); var currentVal = x.value; document.getElementById("txtKalan").value = parseFloat(currentVal); }
Diğeri==> onchange="javascript:PesinatChange();"
function PesinatChange() { var Tutar = 0; var Pesinat = 0; var x = document.getElementById("txtTutar"); var y = document.getElementById("txtPesinat"); var Tutar = parseFloat(x.value); var Pesinat = parseFloat(y.value); var Kalan = Tutar - Pesinat; if (Kalan > -1) { var Kalan = Tutar - Pesinat; document.getElementById("txtKalan").value = parseFloat(Kalan); } else { alert('Alınan peşinat Tutardan büyük olamaz!') } }
-
Abi textboxlar veriyi string olarak veriyor zaten. Stringi istediğini gibi manipüle edip sonra float a çevirsene
-
sLeymN bunu yazdı
Abi textboxlar veriyi string olarak veriyor zaten. Stringi istediğini gibi manipüle edip sonra float a çevirsene
yukarıda tam olarak bunu yapmaya çalıştığım hata alıyorum.
örnek kod varsa denerim
-
iki Javasript tetikleyicimiz var İlki==> onchange="javascript:TutarChange();"
123456function
TutarChange() {
var
x = document.getElementById(
"txtTutar"
);
var
currentVal = x.value.replaceAll(".",",");
document.getElementById(
"txtKalan"
).value = parseFloat(currentVal);
}
Diğeri==> onchange="javascript:PesinatChange();"
123456789101112131415function
PesinatChange() {
var
Tutar = 0;
var
Pesinat = 0;
var
x = document.getElementById(
"txtTutar"
);
var
y = document.getElementById(
"txtPesinat"
);
var
Tutar = parseFloat(x.value.replaceAll(".",","));
var
Pesinat = parseFloat(y.value.replaceAll(".",","));
var
Kalan = Tutar - Pesinat;
if
(Kalan > -1) {
var
Kalan = Tutar - Pesinat;
document.getElementById(
"txtKalan"
).value = parseFloat(Kalan).toString().replaceAll(",",".");
}
else
{ alert(
'Alınan peşinat Tutardan büyük olamaz!'
) }
}
replaceAll fonksiyonu ile aldığın değerlerdeki noktaları virgülle değiştireceksin, sonra float parse edeceksin ardından işlemi yapacaksın çıkan sonucu float to string yapıp tekrar virgül ile noktayı değiştireceksin.
-
sLeymN bunu yazdı
iki Javasript tetikleyicimiz var İlki==> onchange="javascript:TutarChange();"
123456function
TutarChange() {
var
x = document.getElementById(
"txtTutar"
);
var
currentVal = x.value.replaceAll(".",",");
document.getElementById(
"txtKalan"
).value = parseFloat(currentVal);
}
Diğeri==> onchange="javascript:PesinatChange();"
123456789101112131415function
PesinatChange() {
var
Tutar = 0;
var
Pesinat = 0;
var
x = document.getElementById(
"txtTutar"
);
var
y = document.getElementById(
"txtPesinat"
);
var
Tutar = parseFloat(x.value.replaceAll(".",","));
var
Pesinat = parseFloat(y.value.replaceAll(".",","));
var
Kalan = Tutar - Pesinat;
if
(Kalan > -1) {
var
Kalan = Tutar - Pesinat;
document.getElementById(
"txtKalan"
).value = parseFloat(Kalan).toString().replaceAll(",",".");
}
else
{ alert(
'Alınan peşinat Tutardan büyük olamaz!'
) }
}
replaceAll fonksiyonu ile aldığın değerlerdeki noktaları virgülle değiştireceksin, sonra float parse edeceksin ardından işlemi yapacaksın çıkan sonucu float to string yapıp tekrar virgül ile noktayı değiştireceksin.
Yine hatalı işlem yapıyor.
virgullü denedim
noktalı sonuç
-
Dener misin hocam?
function TutarChange() { var x = document.getElementById("txtTutar"); var currentVal = x.value; document.getElementById("txtKalan").value = currentVal; }
function PesinatChange() { var Tutar = 0; var Pesinat = 0; var x = document.getElementById("txtTutar"); var y = document.getElementById("txtPesinat"); var Tutar = parseFloat(x.value.replaceAll(".",",")); var Pesinat = parseFloat(y.value.replaceAll(".",",")); var Kalan = Tutar - Pesinat; if (Kalan > -1) { var Kalan = Tutar - Pesinat; document.getElementById("txtKalan").value = Kalan.toFixed(2).replaceAll(",","."); } else { alert('Alınan peşinat Tutardan büyük olamaz!') } }
-
baysevgi77 bunu yazdı
Dener misin hocam?
function TutarChange() { var x = document.getElementById("txtTutar"); var currentVal = x.value; document.getElementById("txtKalan").value = currentVal; }
function PesinatChange() { var Tutar = 0; var Pesinat = 0; var x = document.getElementById("txtTutar"); var y = document.getElementById("txtPesinat"); var Tutar = parseFloat(x.value.replaceAll(".",",")); var Pesinat = parseFloat(y.value.replaceAll(".",",")); var Kalan = Tutar - Pesinat; if (Kalan > -1) { var Kalan = Tutar - Pesinat; document.getElementById("txtKalan").value = Kalan.toFixed(2).replaceAll(",","."); } else { alert('Alınan peşinat Tutardan büyük olamaz!') } }
hem nokta da hem de virgül de yine hata alıyorum.
Tutar:375.75
Peşinat:10.15
Kalan:365.00Tutar:375,75
Peşinat:10,15
Kalan:365.00 -
function TutarChange() { var x = document.getElementById("txtTutar"); var currentVal = x.value; document.getElementById("txtKalan").value = currentVal; }
function PesinatChange() { var Tutar = 0; var Pesinat = 0; var x = document.getElementById("txtTutar"); var y = document.getElementById("txtPesinat"); var Tutar = parseFloat(x.value.replace(".",",")); var Pesinat = parseFloat(y.value.replace(".",",")); var Kalan = Tutar - Pesinat; if (Kalan > -1) { var Kalan = Tutar - Pesinat; document.getElementById("txtKalan").value = Kalan.toFixed(2).replace(",","."); } else { alert('Alınan peşinat Tutardan büyük olamaz!') } }
Bunu dener misin?
-
Hocam javascript'de , ile sayı ayırma gibi bir notasyon yok o yüzden bence C#'da işlem yaparken CultureInfo kullanarak float değerlerde , yerine . kullanımını değiştirmen daha sağlıklı olur gibi geliyor. Javascript'de takla atmana da gerek kalmaz.
System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone(); customCulture.NumberFormat.NumberDecimalSeparator = "."; System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;
Javascript'de , konmaması için de input type="number" olarak belirtirsen o input'a decimal ve int sayılar hariç girişi engelleyebilirsin.
antichrist tarafından 27/Şub/23 22:01 tarihinde düzenlenmiştir -
baysevgi77 bunu yazdı
function TutarChange() { var x = document.getElementById("txtTutar"); var currentVal = x.value; document.getElementById("txtKalan").value = currentVal; }
function PesinatChange() { var Tutar = 0; var Pesinat = 0; var x = document.getElementById("txtTutar"); var y = document.getElementById("txtPesinat"); var Tutar = parseFloat(x.value.replace(".",",")); var Pesinat = parseFloat(y.value.replace(".",",")); var Kalan = Tutar - Pesinat; if (Kalan > -1) { var Kalan = Tutar - Pesinat; document.getElementById("txtKalan").value = Kalan.toFixed(2).replace(",","."); } else { alert('Alınan peşinat Tutardan büyük olamaz!') } }
Bunu dener misin?
12.75
2.15
10.00
-
Öncelik globalde küsürat ayracı . ile ifade edilir basamak ayracı , ile TR de ise tam tersi küsürat , basamak . olarak ifade ediliyor bundan dolayı
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script> function hesapla() { var tutar = document.getElementById("tutar").value; if (tutar == "") { tutar = 0; } pesinat = document.getElementById("pesinat").value; if (pesinat == "") { pesinat = 0; } tutar = tutar.replace(",", "."); pesinat = pesinat.replace(",", "."); kalan = parseFloat(tutar) - parseFloat(pesinat); kalan = kalan.toString().replace(".", ","); document.getElementById("kalan").value = kalan; } </script> </head> <body> <input type="text" id="tutar" placeholder="Tutar" onchange="hesapla()"> <input type="text" id="pesinat" placeholder="Peşinat" onchange="hesapla()"> <input type="text" id="kalan" placeholder="Kalan"> </body> </html>