我想在我的表单中添加一个简单的复选框:
$element = new Zend_Form_Element_Checkbox('dont');
$element->setDescription('Check this box if you don\'t want to do this action.');
$form->addElement($element);
但是,这就是 html 的样子:
<dt id="dont-label"> </dt>
<dd id="dont-element">
<input type="hidden" name="dontAttach" value="0">
<input type="checkbox" name="dontAttach" id="dontAttach" value="1">
<p class="description">Don't attach a bulletin. I only want to send an email.</p>
</dd>
问题在于我使用 jQuery 来隐藏所有在 DT
内部具有标签的 DT/DD 和在 DD 内部具有隐藏元素的所有 DT/DD(因此我的 html 将验证并且隐藏元素不会占用空间这页纸)。有没有办法使用 aZend_Form_Element_Checkbox
而不必显示隐藏的输入元素?我宁愿不要弄乱我的 jQuery 代码来添加更多警告,但如果我必须这样做,我会这样做。
解决方案:
显然,我不能/不应该删除复选框元素之前的隐藏元素。所以这是我的 jQuery 代码,用于隐藏所有隐藏的表单元素,使其不显示在页面上:
//fix zf hidden element from displaying
$('input[type=hidden]').filter(function() {
var noLabel = $(this).closest('dd').prev('dt').html() === ' ';
var onlyChild = $(this).is(':only-child');
if (noLabel && onlyChild) {
return true;
}
return false;
}).each(function() {
$(this).closest('dd').hide()
.prev('dt').hide();
});