0

我有一个下拉列表,在选择一个值时,会发生一个 ajax 调用,并且应该填充一个文本框。基本功能正在工作(因为它调用了我的控制器中查找值的函数),但我似乎无法获取文本框的值来显示检索到的值。

而不是像这样出现的文本框 HTML 代码(假设 100.00 是返回值)

<input name="data['Visit']['room_rate'] type="text" id="VisitRoomRate" value="100.00"></input>

它正在更新(值在输入标签之间,未设置为值 =“100”)

<input name="data['Visit']['room_rate'] type="text" id="VisitRoomRate">100.00</input> 

这是视图中的代码显示检索到的值

//get_room_rate.ctp 

 <?php echo $room_rate; ?>

这是ajax调用的代码

$this->Js->get('#VisitRoomId')->event('change', 
    $this->Js->request(array(
        'controller'=>'visits',
        'action'=>'getRoomRate'
        ), array(
        'update'=>'#VisitRoomRate',
        'async' => true,
        'method' => 'post',
        'dataExpression'=>true,
        'data'=> $this->Js->serializeForm(array(
            'isForm' => false,
            'inline' => true
            ))
        ))
);

编辑我让它工作了,虽然我不确定这是否是正确的方法

我改变了我的表格,所以房价输入是在这样的 div 中

?><div id="room_rate_update"><?php
    echo $this->Form->input('room_rate', array('label' => 'Room Rate (numbers only)'));
?></div><?php

然后在显示新数字的视图中,我将其交换为输入,如下所示

<label for="VisitRoomRate">Room Rate </label>
<input name="data[Visit][room_rate]" maxlength="10" type="text" id="VisitRoomRate" required="required" value="<?php echo $room_rate; ?>"></input>
4

1 回答 1

0

不要使用“update”选项来更新提供的 DOM 项,而是使用“success”选项来命名一个回调函数,以便在成功完成 ajax 调用时触发。然后在该函数中更新输入的值而不是文本。(与 Ca​​ke JS Helper 相比,直接使用 javascript 或 jquery 可能更容易一些)

http://book.cakephp.org/2.0/en/core-libraries/helpers/js.html#JsHelper::request

于 2013-08-13T22:18:10.830 回答