【发布时间】:2011-07-22 16:08:35
【问题描述】:
我有一个 Zend 表单,它有两个复选框,如果第一个未选中,则第二个应该被禁用。
这两个元素是:
$element = $this->createElement('checkbox','show_assessments');
$element->setLabel('Do you want to view assessments?');
$element->setAttrib('onchange', 'javascript:toggleElement("show_assessments", "show_expired")');
$element->clearDecorators();
$element->addDecorator('StandardTable');
if($preferences['show_assessments'])
$element->setValue(1);
$this->addElement($element);
$this->_elementNames[] = 'show_assessments';
$element = $this->createElement('checkbox','show_expired');
$element->setLabel('Include expired programs?');
if(!$preferences['show_assessments'])
$element->setAttrib('disable', true);
$element->clearDecorators();
$element->addDecorator('StandardTable');
if($preferences['show_expired'])
$element->setValue(1);
$this->addElement($element);
$this->_elementNames[] = 'show_expired';
我切换元素的Javascript函数是:
function toggleElement(sender, receiver)
{
if (!sender || !receiver) return;
if ($('#'+sender).is(':checked'))
{
$('#'+receiver+' :input').removeAttr('disabled');
alert(receiver+' is now enabled');
}
else
{
$('#'+receiver+' :input').attr('disabled', true);
alert(receiver+' is now disabled');
}
if ($('#'+receiver).is('checked'))
alert(receiver+' is checked');
else
alert(receiver+' is not checked');
}
问题是最后一个 if 语句,检查接收器是否被检查,无论如何都是假的,并且接收器永远不会切换。有什么想法吗?
编辑:
第二个元素似乎总是有问题。我尝试反转它,所以 show_expired 是发送者,show_assessments 是接收者,这一次它可以判断 show_expired 何时被检查,但无法判断 show_assessments。
【问题讨论】:
标签: javascript jquery zend-framework