我想在我的表单中添加一个简单的复选框:
然而,这就是 HTML 的样子:
这样做的问题在于,我正在使用jQuery来隐藏所有DT/DD中带有
解决方案:
显然,我不能/不应该在复选框元素之前删除隐藏元素。因此,以下是我的jQuery代码,用于隐藏所有隐藏的表单元素以避免在页面上显示:
$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/DD中带有
标签的标签以及DD内部的隐藏元素(这样我的HTML将被验证,隐藏的元素不会占用页面空间)。是否有一种方法可以使用Zend_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();
});