Я хотел бы добавить простой флажок к моей форме:
$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, которые имеют метку
внутри DT и скрытый элемент внутри DD (поэтому мой HTML будет проверен, а скрытые элементы не не занимать место на странице). Есть ли способ использовать Zend_Form_Element_Checkbox
без отображения скрытого элемента ввода? Я бы предпочел не связываться с моим кодом jQuery, чтобы добавить больше предостережений, но я сделаю это, если придется.
Решение:
Видимо, я не могу / не должен удалять скрытый элемент перед элементом checkbox. Итак, вот мой код 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();
});