2017-06-19 5 views
0

Ich habe ein Zitatformular, das Daten aus einer DB mit PHP zieht. Eines der Felder, die aus der DB gezogen werden, ist die Partnerstufe (Silber, Gold, Platin).Javascript Update Formularfeld basierend auf Daten im vorherigen Feld

Das Feld unterhalb der Partnerebene zeigt den Rabatt%, den der Partner erhält, basierend auf der Ebene, in der er sich befindet (höhere Ebene entspricht einem höheren Rabatt).

Sobald das Formular geladen und die Partner-Ebene aus der Datenbank gezogen wird, möchte ich das Feld unterhalb der Partner-Ebene anzeigen, um den Rabatt basierend auf der Ebene des Partners der Benutzer anzuzeigen.

Hier wird die Fieldset des Formulars zur Zeit aufgebaut habe ich:

<fieldset> 
          <div class="form-top"> 
           <div class="form-top-left"> 
            <h2>Partner Information</h2> 
            <h3>Tell us who you are</h3> 
           </div> 
           <div class="form-top-right"> 
            <img src="assets/images/icons/partner_info.png" class="form-icon"> 
           </div> 
          </div> 
          <div class="form-bottom"> 
           <div class="form-group"> 
            <input type="text" readonly="readonly" name="form-partner-name" placeholder="Partner name" class="form-partner-name form-control" id="form-partner-name" 
              value="<?php echo $_SESSION['user']['firstName'], " ", $_SESSION['user']['lastName']?>"> 
           </div> 
           <div class="form-group"> 
            <input type="text" readonly="readonly" name="form-partner-level" placeholder="Partner Level" class="form-partner-level form-control" id="form-partner-level" 
              value="<?php echo $_SESSION['user']['partnerLvl']?>"> 
           </div> 
           <div class="form-group"> 
             <input type="text" readonly="readonly" name="discount-perc" placeholder="Discount(%)" class="form-control" id="form-discount-perc"> 
            </div> 
            <div class="form-group"> 
             <input type="text" name="form-margin-perc" placeholder="Margin(%)" class="form-control" id="form-margin-perc"> 
            </div> 
           <br /> 
           <button type="button" class="btn btn-next">Next</button> 
          </div> 
</fieldset> 

Wie Sie das Feld Rabatt aktualisiere durch den Wert des Partnerebene Feld Lesen mit Hilfe von Javascript? sein

+1

Zwei Ihrer Felder haben 'id =" Form-Partnername "' - Sie möchten das beheben. –

+0

Guter Fang, danke! –

Antwort

0

sollte die Eingabe:

<input type="text" name="form-partner-level" placeholder="Partner level" class="form-partner-name form-control" id="form-partner-level" 'onblur="updateDiscount()"' 
value="<?php echo $_SESSION['user']['partnerLvl']?>"> 

Dann wird das Skript

<script language="javascript"><!-- 
function updateDiscount() { 
    var level = document.forms["your-form"].form-partner-level.value; 
var discount = document.forms["your-form"].discount-perc.value; 

    if (level == "Platinum") { 
    discount = 20; 
    } else { 
    discount = something-else; 
    } 
//--></script> 

*** Update: OP für die Berechnung beim Laden der Seite fragt. In diesem Fall:

<?php 
     if ($_SESSION['user']['partnerLvl'] == "Platinum") { 
     $discount = 20; 
     } else { 
     $discount = something-else; 
     } 
... 

    <input type="text" readonly="readonly" name="discount-perc" class="form-control" id="form-discount-perc" value="<?php echo $discount; ?>" /> 
+0

Ich sehe, was Sie hier bekommen, aber ich denke nicht, dass diese genaue Lösung funktionieren würde. onkeyup wird ausgelöst, wenn der Benutzer einen Schlüssel freigibt, aber beim Laden der Seite werden keine Schlüsseleingaben ausgeführt. Das zweite Problem ist, dass die js den Zeichenfolgenwert lesen und in eine Rabattstufe übersetzen muss (d. H., Wenn Partnerebene == "Platinum" dann den Rabatt% -Wert auf 20% setzt). –

+0

In Onblur geändert. Aber ich bin ein wenig unklar, warum der Rabatt ein Eingabefeld ist. Auch der Name und das Level verwenden immer noch dieselbe ID und denselben Namen, was ziemlich verwirrend ist. –

+0

Ich habe die IDs so aktualisiert, dass sie anders sind. Der Rabatt ist ein Eingabefeld, da dadurch die Formatierung auf der Seite konsistenter wird. Ich glaube, dass das Ereignis onblur() ausgelöst wird, wenn ein Benutzer ein Feld verlässt. Was ich brauche, um beim ersten Laden des Formulars angezeigt zu werden. Vielleicht sollte ich diesen Wert in meiner Datenbank einstellen und ihn gleichzeitig mit dem Partner-Level-Feld laden lassen? –

Verwandte Themen