Frage

Ich bin Neuling in Yii-Framework und beginne auf kleines Web-Projekt zu lernen, damit ich auf dieser Position als steckengeblieben, wie es zu lösen.

Ich habe eine ‚Order_form‘, wo ein Benutzer seine Bestellung hat und wenn will die ‚Menge‘ so zu ändern, dass nur kann diese dann ändern, um diesen Ich brauche bydoing den Gesamtwert zu ändern, berechnen auf Fly auf gleiche Form, wenn Menge zu sein wurde verändert durch den Benutzer.

beginWidget ( 'CActiveForm', array ( 'Id' => 'bestellen-Form', 'EnableAjaxValidation' => false, )); ?>
<div class="row">
        <?php echo $form->labelEx($model,'price'); ?>
        <?php echo $model->price; ?>
</div>

<div class="row">
        <?php echo $form->labelEx($model,'qty'); ?>
        <?php echo $form->textField($model,'qty'); ?>
        <?php echo $form->error($model,'qty'); ?>
</div>

<div class="row">
        <?php echo $form->labelEx($model,'total'); ?>
        <?php echo $form->textField($model,'total'); ?>
</div>

endWidget (); ?>

$ (Document) .ready (function () { var myVar = '999'; $ ( "# Model_total") val (myVar). }); ‚

Hier aktualisiert ich mein Skript zu klären, was ich brauche, also hier Ich versuche, einen Wert von ‚999‘ zu übergeben ‚Total‘ auf der gleichen Form, aber das funktioniert nicht. Es könnte sein, dass ich fehle / etwas falsch zu machen.

Ich möchte auch andere Art und Weise zu berechnen Anzahl Preis x und das Ergebnis aus der Steuerung, wenn dies möglich ist, wenn so Führung durch den Code bitte.

War es hilfreich?

Lösung

Ein Grund der JS Sie vielleicht nicht haben arbeiten ist: Sind Sie sicher, die „total“ ID „model_total“? Normalerweise ist es so etwas wie „ORDER_TOTAL“. Schauen Sie sich Ihre HTML-Quelle zu überprüfen (Firebug hilft).

Wie auch immer, einige andere Vorschläge:

Ein üblicher Weg, dieses Ordnung Gesamt Problem zu lösen, ist eine „Warenkorb aktualisieren“ klicken, dass POSTs das Formular zurück an die Steuerung, wo die Auftragssumme berechnet wird, und dann die Seite gerendert wieder mit dem neuen Gesamt.

Eine andere Möglichkeit, dies zu tun wäre, um Live eine onBlur einzurichten () (oder Delegierte) Zuhörer, die eines von zwei Dingen tut (ähnlich dem, was Sie versuchen, jetzt):

(1) Post die Form an die Steuerung, wo die Gesamt neu berechnet wird. So etwas wie diese (nicht getestet):

$("#order-form #Order_qty").live('blur',function() {
  $.ajax({
    'type':'POST',
    'data':$('#order-form').serialize(),
    'success':function(data){$('#Order_total').val(data)}
  });}
);

Sie müssen etwas in Ihrer Controller-Aktion wie diese haben:

if(isset($_POST['ajax']) && $_POST['ajax']==='order-form' && isset($_POST['Order'])) {
  // calculate new total based on the $_POST Model_qty field
  echo $new_total;
  Yii::app()->end();
}

(2) Man könnte die Berechnung völlig in JS tun, und aktualisieren Sie es, wie Sie jetzt zu tun versuchen. Denken Sie daran, können Sie die Auftragsmenge in der Datenbank auf diese Weise aktualisieren, Sinus Sie den Controller nicht zu schlagen.

$("#order-form #Order_qty").live('blur',function() {
  $('#Order_total').val($('#Order_price').val() * $('#Order_qty').val());
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top