-1

我有一个包含一些禁用字段的表单,当提交表单时,$this->request->data 和 $_POST 都是空的,删除禁用的字段,它又可以了。我会虽然它仍然会通过非禁用字段。我什至尝试在按下提交按钮时删除禁用的字段属性,但这仍然返回一个空数组。

是否有与蛋糕有关的东西可能导致这种情况?

谢谢

// 来自视图代码的片段:

$this->Form->create('Card', array('class' => 'GeneralValidate'));

$this->Form->input('Card.property_id', array('type'=>'select', 'empty'=>true , 'class' => 'required adminOnlyField', 'div' => array('class' => 'required'))); 
$this->Form->input('Card.building_id', array('type'=>'select', 'empty'=>true, 'id' => 'BuildingSelector', 'class' => 'adminOnlyField', 'label' => 'Building (If Applicable)')); 
$this->Form->input('Prospect.waiting_list_details', array('value' => $prospect['Prospect']['waiting_list_details']));
$this->Form->input('SaleDetail.property_sold', array('class' => 'checkbox', 'checked' => $ps_checked));
$this->Form->input('SaleDetail.date_conditions_met', array('type'=>'text', 'class' => 'text date_picker adminOnlyField', 'value' => $this->Date->format($saledetail['SaleDetail']['date_conditions_met'])));
$this->Form->button('Save & Continue', array('type'=>'submit', 'label' => 'Save', 'name' => 'quicksave' , 'class' => 'submit long clear_ready_only'));

// 视图中的 JS

$(function () {

var $adminOnly = $('.adminOnlyField');
$adminOnly.prop('disabled',true).prop('readonly',true);
$adminOnly.attr("onclick","return false");
$adminOnly.attr("onkeydown","return false");
$adminOnly.removeClass('required');
$adminOnly.removeClass('date_picker');



$('.clear_ready_only').click(function(e) 
{
    e.preventDefault();
    $adminOnly.prop('disabled',false).prop('readonly',false);
    $adminOnly.attr("onclick","return true");
    $adminOnly.attr("onkeydown","return true");
    $('#CardModifysaleForm').submit();
});

});
4

2 回答 2

0

这就是 HTML 的工作方式,禁用不发布。CakePHP 不能改变浏览器发送的内容。如果您仍然想要该值,可以将其设置为隐藏元素。

更新

我看到的一些问题:

  1. 视图中缺失(插入它Form::end()总是一个好主意)。
  2. 你从来没有说过你的表单是从 JS 提交的,首先用一个简单的表单 POST 然后 JS 进行测试。
  3. 您的 JS 代码设置为通过 ID 提交表单CardModifysaleForm。您提供的视图代码中没有此类 ID,并且您没有将表单设置为您提供的代码段中的该 ID。
于 2013-09-06T23:02:27.990 回答
0

我最终从这里删除了 disabled 选项,只留下了 ready 并添加了一些额外的 CSS 样式,所以它看起来对用户来说是禁用的。这不是问题的确切答案,而是一种不同的方法。

于 2013-09-08T23:48:14.193 回答