Возможно добавить JavaScript в Zend_Form_Element_Radio? - PullRequest
0 голосов
/ 25 октября 2009

В конечном счете, я бы хотел, чтобы моя Zend Form отображала этот HTML-код:

<p>Do you have any documents to upload?</p>
<p>Yes <input type="radio" value="Yes" name="uploadChoice" onClick="showTable()">&nbsp;&nbsp;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 ()" к переключателям, если я не могу добавить что-то другое для каждой из переключателей. Но позволит ли Зенд мне это сделать?

Ответы [ 3 ]

1 голос
/ 03 мая 2010

Вам просто нужно использовать setAttrib вот так:

$uploadQuestion->setAttrib('onClick','showTable();');

Очевидно, что в этом случае вам придется использовать одну и ту же функцию JS для всех переключателей радиогруппы uploadQuestion.

Надеюсь, это поможет somenone.

0 голосов
/ 20 мая 2013

Добавить к вашему коду:

->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>

пс. я пытаюсь с моим кодом

->setAttrib('onclick', 'showHideFields();') 

И ЭТО НЕ РАБОТАЕТ, поэтому я пытаюсь

->setAttrib('onclick', 'showHideFields()')

И ЭТО РАБОТАЕТ ПРАВИЛЬНО (zf 1.12)

0 голосов
/ 05 апреля 2011

Почему бы вам просто не сделать это с помощью JavaScript? Вам не нужно, чтобы он был внутри элемента ввода. Просто используйте javascript, чтобы получить его по id, а затем добавьте прослушиватель событий.

В качестве альтернативы вас может заинтересовать этот пост http://paveldubinin.com/2011/04/zend-form-radio-buttons/, описывающий, как решить эту проблему, разбив радиогруппу на набор независимых элементов радиопереключателя, но которые ведут себя как один.

Затем вы можете назначить любые параметры (включая, если хотите, onlclick) для этих отдельных переключателей.

...