script register incluir example asset javascript yii2

javascript - incluir - yii2 register asset



Yii2-dynamicforms y javascript (1)

Formar

<div class="col-sm-4"> <?= $form->field($modelItemFactura, "[{$i}]precio")->textInput([''maxlength'' => true, ''onchange'' => ''getProduct($(this))'', ''onkeyup'' => ''getProduct($(this))'']) ?> </div> <div class="col-sm-4"> <?= $form->field($modelItemFactura, "[{$i}]cantidad")->textInput([''maxlength'' => true, ''onchange'' => ''getProduct($(this))'', ''onkeyup'' => ''getProduct($(this))'']) ?> </div>

JS

function getProduct(item) { var index = item.attr("id").replace(/[^0-9.]/g, ""); var total = current = next = 0; var id = item.attr("id"); var myString = id.split("-").pop(); if(myString == "precio") { fetch = index.concat("-cantidad"); } else { fetch = index.concat("-precio"); } temp = $("#itemsfactura-"+fetch+"").val(); if(!isNaN(temp) && temp.length != 0) { next = temp; } current = item.val(); if(isNaN(current) || current.length == 0) { current = 0; } if(!isNaN(current) && !isNaN(next)) { total = parseInt(current) * parseInt(next); } totalItem = "itemsfactura-".concat(index).concat("-total_item"); $("#"+totalItem+"").val(total); }

Tengo formas dinámicas wbraganca trabajando en Yii2, pero necesito agregar una pequeña función para multiplicar 2 campos y poner valor en un tercero, y hacer eso en cada nueva forma dinámica (supongamos que el campo 1 es precio, el campo 2 es cantidad y el campo 3 es total). Con el código que tengo, puedo hacerlo, pero solo en la primera forma dinámica.

<?php $script = <<< JS $(''#itemsfactura-{$i}-cantidad'').change(function(){ var cantidad = $(this).val(); var precio = $(''#itemsfactura-{$i}-precio'').val(); $(''#itemsfactura-{$i}-total_item'').val(cantidad * precio); }); JS; $this->registerJs($script); ?>

Este es el código para los campos de formulario dinámicos:

... <div class="row"> <div class="col-sm-4"> <?= $form->field($modelItemFactura, "[{$i}]precio")->textInput([''maxlength'' => true]) ?> </div> <div class="col-sm-4"> <?= $form->field($modelItemFactura, "[{$i}]cantidad")->textInput([''maxlength'' => true]) ?> </div> <div class="col-sm-4"> <?= $form->field($modelItemFactura, "[{$i}]total_item")->textInput([''maxlength'' => true]) ?> </div> </div>...