ajax请求的许多输入字段和按钮对仅适用于第一次。在第一次请求 - 响应之后,其他按钮不会调用ajax函数。
有一个数据网格列表。每行都有一个Title字段(作为输入),带有一个按钮,用于调用ajax函数来更新该字段和刷新列表。
我第一次点击其中一个按钮一切正常,数据发送和列表刷新新数据。但在此之后,当我点击其中一个按钮时没有任何反应,甚至功能都没有调用。 我在哪里做错了? 我的ajax功能:
$('.titleBtn').click(function(event){
var id = $(this).attr('name');
var title = $('#' + id).attr('value');
var formAction = '".$this->createUrl('article/changeTitle')."';
$.get(formAction,{id:id,title:title},function(result){
$.fn.yiiGridView.update('article-grid');
}
);
event.preventDefault();
});
我的网格列表:
<?php $form=$this->beginWidget('CActiveForm', array(
'action'=>Yii::app()->createUrl($this->route),
'method'=>'get',
'id'=>'Artform',
)); ?>
<?php $this->widget('bootstrap.widgets.TbGridView', array(
'id'=>'article-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'ID',
array(
'header'=>Yii::t('labels','Title'),
'name'=>'Title',
'type'=>'raw',
'value'=> function($data) use ($model) {
return '<input type="text" id="'.$data->ID.'" value="'.$data->Title.'"><button type="button" name="'.$data->ID.'" class="titleBtn" >Update</button>';
},
),
....
),
)); ?>
//Some buttons irrelevant to this subject for submitting whole list.
<?php $this->endWidget('CActiveForm'); ?>
答案 0 :(得分:0)
您需要在TbGridView中添加afterAjaxUpdate
选项并添加js代码以在ajax更新后调用并设置处理程序。
答案 1 :(得分:0)
您可以使用delegate
设置活动$('#Artform').delegate('.titleBtn', 'click', function() {
...
});