最终,我希望我的Zend表格能够呈现这个HTML:
<p>Do you have any documents to upload?</p>
<p>Yes <input type="radio" value="Yes" name="uploadChoice" onClick="showTable()"> No <input type="radio" value="No" name="uploadChoice" onClick="hideTable()" checked></p>
这是我在Zend_Form中的内容:
//create radio buttons
$uploadQuestion = new Zend_Form_Element_Radio('upLoadQuestion');
$uploadQuestion->setLabel('Do you have any documents to upload?')
->addMultiOptions(array(
'yes' => 'Yes',
'no' => 'No'
))
->setSeparator(' ');
我遇到的问题是如何将onClick =“showTable()”和onClick =“hideTable()”元素添加到各自的单选按钮。
在替代方案中,如果我无法为每个单选按钮添加不同的内容,我可以重写javascript并在单选按钮上添加类似onClick =“toggleTable()”的内容。但是,Zend会让我这样做吗?
答案 0 :(得分:1)
你只需要像这样使用setAttrib:
$uploadQuestion->setAttrib('onClick','showTable();');
显然,在这种情况下,你必须对“uploadQuestion”无线电组的所有单选按钮使用相同的JS函数。
希望它能帮到某些人。
答案 1 :(得分:0)
你为什么不用javascript做这个?你不需要你的onclick就在input元素里面。只需使用javascript通过id拉取它,然后添加事件监听器。
或者,您可能对此帖http://paveldubinin.com/2011/04/zend-form-radio-buttons/感兴趣,该帖描述了如何通过将无线电组拆分为一组独立的无线电按钮元素来解决这个问题,但这些元素的行为是单一的。
然后,您可以将任何参数(包括onlclick,如果您愿意)分配给这些单独的单选按钮。
答案 2 :(得分:0)
添加到您的代码:
->setAttrib('onclick', 'showHideFields()')
然后只需添加jquery脚本,如下所示:
<script type="text/javascript>
function showHideFields(){
if($("input[type='radio']:checked").val()==='1'){
//is checked
}else if($("input[type='radio']:checked").val()==='0'){
//is not checked
}
}
</script>
PS。我尝试使用我的代码
->setAttrib('onclick', 'showHideFields();')
它没有工作所以我试试
->setAttrib('onclick', 'showHideFields()')
它的工作正确(zf 1.12)