2012-07-20 1 views
0

라디오 체크 이벤트 또는 버튼 onclick 이벤트에서 zend 폼 내의 하위 폼을 표시하거나 숨길 수 있는지 궁금합니다. 사용자 필드 요소가있는 양식이 있고 이제는 암호 요소가있는 하위 양식을 사용하여 사용자가 암호를 선택적으로 변경할 수있는 기능을 제공합니다. 그러나 나는 단지 요청에 따라 암호 요소를 보여주고 싶습니다 (예 : '암호 변경'라디오 버튼을 클릭하면 암호 요소가 나타납니다).하위 폼 onclick을 Zend 폼으로 표시하거나 숨길 수 있습니까?

Zend \ Form에서 가능합니까? 아니면 클라이언트 사이드 자바 스크립트를 사용하여 요소를 표시하거나 숨길 필요가 있습니까?

+1

당신은 분명히 자바 스크립트를 사용해야합니다 ... –

+0

감사합니다, 당신은 어떻게 하위 양식을 렌더링합니까? –

+0

양식에 추가하기 만하면됩니다. 'setAttrib'메서드를 사용하면 하위 특성에 스타일 특성을 추가하고 디스플레이를 '없음'으로 설정할 수 있습니다. 그런 다음 다른 양식 속성에 onclick 핸들러를 추가하여 하위 양식을 표시하십시오. –

답변

2

그런 일은 가능하지만 클라이언트 측은 자바 스크립트를 사용해야합니다. Personnaly, 나는 그런 종류의 물건에 대해 jQuery를 사용하기를 좋아한다. 어떻게 할 수있는 지에 대한 예가 있습니다.

class My_Form extends Zend_Form { 

$field = $this->createElement('select', 'myselect'); 
$field->setLabel('Choose to display the form or not'); 
$field->setMultiOptions(array('1'='Display', '2'=>'Do not display')); 
$this->addElement($field); 

$field = $this->createElement('text', 'optionaltext'); 
$field->setLabel('This is an optional field'); 
$this->addElement($fiel); 
} 

자, 레이아웃, 당신은 jQuery 라이브러리 포함해야한다 :

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"> 

그리고를 마지막으로, 당신은 다른의 .js 파일을 포함해야합니다 (또는 단순히 페이지에 < 스크립트에서 > 태그 코드를 포함).

$(document).ready(function() { 
$(function() { 
    //Function triggered when changing the value in the drop down 
    $('#myselect').change(function(event) { 
    if($('#myselect').val() == 1) { 
    //Show elements 
    $('#optionaltext').show(); 
    //The following line shows/hides all the dd/dt wrappers as well 
    $('[id*=optionaltext]).show(); 
    } else { 
    //Hide elements 
    $('#optionaltext').hide(); 
    //The following line shows/hides all the dd/dt wrappers as well 
    $('[id*=optionaltext]).hide(); 
    } 
    }); 
}); 
}); 

지금은 코드를 테스트하지 않았습니다 염두에 두시기 바랍니다 난 그냥 내가 실제로 그렇게 하루의 첫 커피를 완료 내 머리 꼭대기에 전에 ... 그것은 몇 가지 버그가있을 수 있습니다 썼다 . 이것은 말하기를, 당신이하고 싶은 일에 좋은 출발이되어야합니다. 누락 된 것이 있거나 찾을 수없는 버그가있는 경우 여기에 질문하십시오. 희망이 도움이!