【问题标题】:Creating a dynamic textfield inside a grdiview在 gridview 中创建动态文本字段
【发布时间】:2024-05-22 21:45:01
【问题描述】:
<?php echo CHtml::beginForm('','post',array('id'=>'base-si-received-item-form'));?>
<?php 
    $this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'base-si-received-item-grid',
        'dataProvider'=>BaseRefSiDetails::model()->search(),
        //'filter'=>$searchModel,
        'columns'=>array(       
            array(
                'class'=>'CCheckBoxColumn',
                'id'=>'base-si-received-item-id',       
                'selectableRows'=>2, // multiple rows can be selected
            ),                  
            array(
                'name'=>'unit',
                'header'=>'unit',
                'type'=>'raw',
                'value'=>'CHtml::textField(BaseSiReceivedItem::model()->quantity_received,"",array("id"=>"received_quantity","name"=>"quantity_received"))',
            ),
            array(
                'name'=>'unit',
                'header'=>'unit',
                'type'=>'raw',
                'value'=>'CHtml::dropDownlist(BaseSiReceivedItem::model()->unit,"unit",array("pc"=>"pc","box"=>"box"))'
            ),
            array(
                'name'=>'unit_cost',
                'header'=>'unit cost',
                'type'=>'raw',
                'value'=>'CHtml::textField(BaseSiReceivedItem::model()->unit_cost,"",array("id"=>"unit_cost"))',
            ),
            array(
                'name'=>'total_cost',
                'header'=>'total cost',
                'type'=>'raw',
                'value'=>'CHtml::textField(BaseSiReceivedItem::model()->total_cost,"",array("id"=>"total_cost","readonly"=>"readonly"))',
            ),
        )
    )
?>

我的 gridview 有问题。
我需要做的是,当输入收到的数量和单位成本时,价格将自动显示在总成本上。 我有一个 jquery 脚本来执行此操作。
我的问题是唯一的第一行正在执行代码:

这是我的 jquery

 $(document).ready( function(){
     $("#unit_cost").keyup(function() {        
         $("#total_cost").val($("#unit_cost").val() * $("#received_quantity").val());        
     });    
 });

【问题讨论】:

  • 您的 ID 重复了。改用一个类,它应该可以工作。
  • 我用了你所说的,发生的情况是当收到的 quan 上的输入数字和单位成本时,所有总成本都将具有相同的数字

标签: jquery gridview dynamic yii textfield


【解决方案1】:

正如@Örs 所说,将您的 id 更改为类。另外操作的context应该是一行,如下:

$(document).ready( function(){
    $(".unit_cost").keyup(function(){
        var tr=$(this).closest('tr');
        $(".total_cost",tr).val($(".unit_cost",tr).val() * $(".received_quantity",tr).val());
    });
});

【讨论】:

  • var tr=this.closest('tr');改成var tr=$(this).closest('tr')
最近更新 更多