2012-04-03 4 views
0

Das scheint so eine einfache Frage.Werte von Eingabefeldern hinzufügen?

Ich habe mehrere Bearbeitungsfelder auf meiner xPage. Der Benutzer kann einen ganzzahligen Wert eingeben oder nicht. Die Felder sind so eingestellt, dass sie eine ganze Zahl akzeptieren.

Ich möchte alle Werte in diesen Feldern zusammenfassen. Ich habe folgendes, das funktioniert, aber es scheint furchtbar ineffizient. Gibt es einen einfacheren Weg dies zu tun?

var DeliveryTotal:int = getComponent(ctlName).getValue() == null ? 0 : parseInt(getComponent(ctlName).getValue()); 
var Delivery100s:int = parseInt(getComponent("inputTextDelivery100s").getValue()); 
var Delivery50s:int = parseInt(getComponent("inputTextDelivery50s").getValue()); 
var Delivery20s:int = parseInt(getComponent("inputTextDelivery20s").getValue()); 
var Delivery10s:int = parseInt(getComponent("inputTextDelivery10s").getValue()); 
var Delivery5s:int = parseInt(getComponent("inputTextDelivery5s").getValue()); 
var Delivery1s:int = parseInt(getComponent("inputTextDelivery1s").getValue()); 


DeliveryTotal = isNaN(DeliveryTotal) ? 0 : DeliveryTotal; 
Delivery100s = isNaN(Delivery100s) ? 0 : Delivery100s; 
Delivery50s = isNaN(Delivery50s) ? 0 : Delivery50s; 
Delivery20s = isNaN(Delivery20s) ? 0 : Delivery20s; 
Delivery10s = isNaN(Delivery10s) ? 0 : Delivery10s; 
Delivery5s = isNan(Delivery5s) ? 0 : Delivery5s; 
Delivery1s = isNan(Delivery1s) ? 0 : Delivery1s; 

var totalEntered = Number(Delivery100s) + Number(Delivery50s) + Number(Delivery20s); 

Antwort

1

Können Sie die Werte Client-Seite berechnen? Wenn ja, könnten Sie die folgende jQuery verwenden. Es wählt alle Felder aus, deren ID mit inputTextDelivery beginnt, und fügt den Wert zusammen hinzu.

Nummer (0 + ..) werden Zuschnitte auf 0 undkonvertiert zu 123

var sum=0; 
$('[id^=inputTextDelivery]').each(function() { 
    sum += Number(0+$(this).val()); 
}); 

Sie sicher Wenn nicht konvertiert werden kann, den Codeblock für 0 durch

var totalEntered = Number(0+Delivery100s) + Number(0+Delivery50s) + Number(0+Delivery20s); 
+0

Danke Marky. Das vereinfacht es sicher. Ich werde es versuchen. –

1

Sie können das Skript ein wenig vereinfachen. Machen Sie ein Array von Komponentennamen. Dann reduzieren Sie Ihren Code in zwei Zeilen mit getValue() und? Bedingung und Iteration innerhalb der Schleife für diese Komponenten Namen Array. Es könnte ein bisschen sauberer sein.

+0

Überprüfung entfernen Danke, aber ich habe auf die Art und Weise gesucht, einfach die Werte in jedem Feld zu nehmen und sie zusammenzufügen. –