2016-04-22 10 views
0

Ich versuche, ein Produkt aus zwei Formularfelder zu bekommen.Muiltplie zwei Felder, eines mit einem Prozentzeichen

Feld A * Feld B = Feld C

Beispiel: (5,7%) * 14835 = 846

aber wenn ich den Code ausführen es zurück "NaN" kommt.

Ich habe festgestellt, dass Feld C versucht, das% -Zeichen auch zu multiplizieren. Wie bekomme ich Feld C, um das% -Zeichen zu ignorieren, wenn Sie die Berechnung durchführen?

Feld A Custom Berechnungsskript - das rundet auf nächste Zehntel und fügt eine "%" Zeichen

if (!event.value) event.value = ""; 

else 
event.value = util.printf("%.1f%", event.value); 

Feld B Benutzerdefinierte Berechnungsskript - das rundet auf die nächste ganze Zahl

if (!event.value) event.value = ""; 

else 
event.value = util.printf("%.0f", event.value); 

Feld C Benutzer Berechnungsskript - multipliziert die Felder A und B, rundet auf die nächste ganze Zahl und konvertiert Feld A in eine Prozentzahl vor der Multiplikation

var v1 = getField("FieldA").value!="" ? getField("FieldA").value : 0; 
var v2 = getField("FieldB").value!="" ? getField("FieldB").value : 0; 

event.value = Math.round(((v1/100)*v2) !==0)?Math.round((v1/100)*v2):""; 
+0

weil die Zeichenfolge "5,7%" ist NaN (keine Nummer) – Kenji

Antwort

0

Es sieht so aus, als könnten Sie einfach das% -Zeichen aus diesem Eingabewert nehmen, um korrekt zu berechnen. Das kann mit Ersetzen wie folgt getan werden:

+0

Das funktioniert und die Antwort kommt gut, aber wenn ich aus dem Text klicke und zu einem anderen gehe, dreht sich Feld A zu "1. $%", Feld C bleibt gleich und Feld C wird zu "NaN". Irgendeine Idee warum? – dave82

0

Format Feld A als Prozentsatz.

Der Wert des Feldes muss dann der tatsächliche Faktor sein (z. B. 0,85 für 85%).

Wenn Sie wollen, dass die Benutzer Prozentzahl eingeben, fügen Sie das folgende Skript zum onFocus Ereignisse:

event.value = event.target.value * 100 ; 

und zum Validate Ereignisse:

event.value = event.value/100 ; 

Und das sollte es tun.

Hinweis: Ich habe es gerade nicht überprüft.

+0

das funktioniert gut, aber ich möchte das Feld leer bleiben, bis sie etwas eingeben und leer zu gehen, wenn dort kein Wert drin ist. Derzeit zeigt es 0,0%. Ich habe zur Validierung des Feldes hinzugefügt: if (! Event.value) event.value = ""; sonst event.value = event.value/100; – dave82