我的代码:
// {{ form_row(form.termsAccept) }} generates #user_termsAccept checkbox field
termsBox.attr("disabled",true);
termsBox.attr("checked",true);
termsBox.val('true'); // OR termsBox.val(1); OR termsBox.val(true); OR termsBox.val(termsBox.prop('checked'));
问题:提交后我得到'这个值应该是真的'。尽管事实上复选框的视觉状态是“真实”,但Symfony的错误。无论我想设置什么值,当通过console.log()检查时,输出值为'1'(这是symfony复选框的默认值)。
问题:如何将禁用的复选框值设置为“symfony's'true'”VIA jQuery?
答案 0 :(得分:1)
构建表单(控制器)时,请使用:
$builder->add('termsBox', CheckboxType::class, array(
'attr' => array(
'disabled' =>'disabled',
'checked' => 'checked',
'data' => true,
),
));
而不是使用jQuery。 或者,在您的实体中,为字段的映射添加默认值:
protected $termsBox = true;
答案 1 :(得分:0)
禁用输入将不会被处理,替代方案是将输入设置为就绪。
不幸的是,您无法将复选框设置为只读,但解决方法是:
<input type="checkbox" onclick="return false" />
这将阻止用户点击,以便您可以让您的js管理其状态