【发布时间】:2014-02-25 18:08:41
【问题描述】:
我有以下 CakePHP 代码:
<tr class="tr_clone">
<td><?php echo $this->Form->input('items][',array('label'=>false,'options'=>$items,'class'=>'items')); ?> </td><td><?php echo $this->Form->input('price][',array('class'=>'price','label'=>false)) ?></td><td><?php echo $this->Form->input('unit][',array('class'=>'unit','label'=>false)) ?></td>
</tr>
我的.tr_clone 是使用 jQuery 克隆的。
下面的 HTML 是在渲染 HTML 和克隆一次.tr_clone 数据后生成的。
<table>
<tr class="tr_clone">
<td>
<div class="input select">
<select id="InvoiceItems][" class="items" name="data[Invoice][items][]">
<option value="3">Item1</option>
<option value="4">Item2</option>
<option value="5">Item3</option>
</select>
</div>
</td>
<td>
<div class="input text">
<input type="text" id="InvoicePrice][" class="price" name="data[Invoice][price][]">
</div>
</td>
<td>
<div class="input text">
<input type="text" id="InvoiceUnit][" class="unit" name="data[Invoice][unit][]">
</div>
</td>
</tr>
<tr class="tr_clone">
<td>
<div class="input select">
<select id="InvoiceItems][" class="items" name="data[Invoice][items][]">
<option value="3">Item1</option>
<option value="4">Item2</option>
<option value="5">Item3</option>
</select>
</div>
</td>
<td>
<div class="input text">
<input type="text" id="InvoicePrice][" class="price" name="data[Invoice][price][]">
</div>
</td>
<td>
<div class="input text">
<input type="text" id="InvoiceUnit][" class="unit" name="data[Invoice][unit][]">
</div>
</td>
</tr>
</table>
现在,当focusout 事件发生在select 时,我正在发送 AJAX 请求。成功完成 AJAX 请求后,我想填充我的 .price 字段。
问题是,当我发送 AJAX 请求时,我无法在选择后再次关注下一个元素,即 .price 并用返回值填充它。
以下是我的 jQuery 代码:
$("table").on('focusout','.items',function(){
var id=$('.items option:selected').val();
$.ajax({
method:'POST',
url:"get_price",
data:{id:id},
success:function(result){
$(this).closest('.tr_clone').find('.price').text(result));
}
});
});
这里是fiddle.
提前致谢。
【问题讨论】:
-
你不需要
proxy()你的成功函数吗?
标签: javascript php jquery ajax cakephp