سؤال

أنا مبتدئ في Framework YII وأبدأ التعلم في مشروع الويب الصغير ، لذلك علقت في هذا الموقف على كيفية حله.

لدي "order_form" حيث يؤكد المستخدم طلبه ، وإذا كان يرغب في تغيير "الكمية" ، لذلك يمكن أن يتغير هذا فقط ، فأنا بحاجة إلى تغيير القيمة الإجمالية التي يجب حسابها عند الطيران على نفس النموذج إذا تم تغيير Qty بواسطة المستعمل.

beginwidget ('cactorform' ، array ('id' => 'order-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) ؛}) ؛ ''

قمت هنا بتحديث البرنامج النصي الخاص بي لتوضيح ما أحتاجه ، لذا أحاول هنا تمرير قيمة "999" إلى "المجموع" في نفس النموذج ولكن هذا لا يعمل. قد يكون أنني مفقود/أفعل شيئًا خاطئًا.

أود أيضًا أن أحساس أسعار Qty X والحصول على النتيجة من وحدة التحكم إذا كان ذلك ممكنًا إذا كان الأمر كذلك ، يرجى توجيهًا من خلال الكود.

هل كانت مفيدة؟

المحلول

أحد الأسباب التي تجعلك لا تعمل JS هو: هل أنت متأكد من أن معرف الحقل "الكلي" هو "model_total"؟ عادة ما يكون مثل "order_total". انظر إلى مصدر HTML الخاص بك للتحقق (يساعد Firebug).

على أي حال ، بعض الاقتراحات الأخرى:

هناك طريقة شائعة لحل هذه المشكلة الإجمالية للترتيب هي زر "تحديث عربة" ، والذي ينشر النموذج مرة أخرى إلى وحدة التحكم حيث يتم حساب إجمالي الطلب ، ثم يتم تقديم الصفحة مرة أخرى مع المجموع الجديد.

هناك طريقة أخرى للقيام بذلك هي إعداد مستمع Onblur Live () (أو مندوب) يقوم أحد أمرين (على غرار ما تحاول الآن):

(1) انشر النموذج إلى وحدة التحكم حيث يتم إعادة حساب المجموع. شيء من هذا القبيل (لم يخبر):

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

ستحتاج إلى الحصول على شيء في إجراء وحدة التحكم مثل هذا:

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) يمكنك إجراء الحساب بالكامل في JS ، وتحديثه كما تحاول القيام به الآن. فقط تذكر أنه لا يمكنك تحديث الطلب Qty في قاعدة البيانات بهذه الطريقة ، فأنت لا تضغط على وحدة التحكم.

$("#order-form #Order_qty").live('blur',function() {
  $('#Order_total').val($('#Order_price').val() * $('#Order_qty').val());
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top