使用CakePHP在下拉列表中更新文本框

时间:2013-08-13 21:37:38

标签: php jquery ajax cakephp

我有一个下拉列表,在选择一个值时,会发生一个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>

1 个答案:

答案 0 :(得分:0)

不使用'update'选项更新提供的DOM项,而是使用'success'选项命名成功完成ajax调用时触发的回调函数。然后在该函数中更新输入的值而不是文本。 (使用直接的javascript或jquery而不是Cake JS Helper可能会更容易一些)

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