使用js更新表单字段但未在提交的数据中显示

时间:2012-02-10 13:36:41

标签: javascript ajax forms cakephp

尝试使用CakePHP 2.0中的JsHelper,我得到了一个Request方法,用AJAX调用的结果更新表单字段的值 - 到目前为止,这非常好。但是,在检查表单字段时,它说:

<input type="hidden" id="JobsPartUnitcost" name="data[JobsPart][unitcost]">5.55</input>

但是当我复制它并首先粘贴它上面说

<input type="hidden" id="JobsPartUnitcost" name="data[JobsPart][unitcost]"></input>

当我提交表单时,值为空。为什么浏览器显示值但底层DOM没有注册它?

使用Mac / Safari,CakePHP 2.0,JQuery

修改 的 这里要求的是表单数据转储

    Array ( [JobsPart] => Array ( [job_id] => 1 [company_id] => 4 [part_id] => 2 [qty] => 3 [unitcost] => ) )

这是AJAX代码

$this->Js->get('#JobsPartPartId')->event('change',
    $this->Js->request(
        array(
            'controller'=>'JobsParts',
            'action'=>'getPart'
        ),
        array(
            'update'=>'#JobsPartUnitcost',
            'async' => true,
            'method' => 'post',
            'dataExpression'=>true,
            'data'=> $this->Js->serializeForm(array(
                'isForm' => false,
                'inline' => true
            ))
        )
    )
);

3 个答案:

答案 0 :(得分:3)

您需要设置值属性:

<input type="hidden" value="YOUR VALUE HERE" name="data[Etc][field]" />

您不会在输入标记中包装值。

答案 1 :(得分:0)

行。我找到了一个解决方法,似乎没有其他人找到直接的解决方案。

在我的静态视图中,我现在只有<td id="part"></td>输入字段所在的位置。我的Ajax调用现在更新'#part',我的动态视图(控制器ajax动作调用的视图)现在输出整个字段 - <?php echo $this->Form->input('unitcost', array('type' => 'text', 'value' => $part['Part']['costamount'])); ?>。丑陋但它有效。

答案 2 :(得分:0)

$this->Js->get('#JobsPartPartId')->event('change',
 $this->Js->request(
    array(
        'controller'=>'JobsParts',
        'action'=>'getPart'
    ),
    array(
        'success'=>'$("#JobsPartUnitcost").val(data)',
        'async' => true,
        'method' => 'post',
        'dataExpression'=>true,
        'data'=> $this->Js->serializeForm(array(
            'isForm' => false,
            'inline' => true
        ))
    )
)

);