Ну, код может быть добавлен через статический элемент Quickform, а подключение может быть выполнено с помощью массивов атрибутов.
Вот код для элементов формы:
$this->addElement('password', 'password', 'Password:', array('id'=>'id_password'));
$this->addElement('checkbox', 'unmask', 'Unmask password:', '', array('onclick'=>'togglePasswordMask(\'id_password\')', 'id'=>'id_passwordunmask'));
и вот код для добавления JavaScript, который выполняет эту работу:
$this->addElement('static', null, '',
'<script type="text/javascript">
//<![CDATA[
function togglePasswordMask(id) {
var pw = document.getElementById(id);
var chb = document.getElementById(id+\'unmask\');
var newpw = document.createElement(\'input\');
newpw.setAttribute(\'name\', pw.name);
if (chb.checked) {
newpw.setAttribute(\'type\', \'text\');
} else {
newpw.setAttribute(\'type\', \'password\');
}
newpw.id = pw.id;
newpw.value = pw.value;
pw.parentNode.replaceChild(newpw, pw);
}
//]]>
</script>');