0

ラジオチェックイベントまたはボタンonclickイベントのいずれかで、zendフォーム内のサブフォームを表示および非表示にできるかどうか疑問に思っています。ユーザーフィールド要素を含むフォームがあり、ユーザーがオプションでパスワードを変更できるようにするパスワード要素を含むサブフォームが必要です。ただし、要求に応じてパスワード要素のみを表示したい(つまり、[パスワードの変更]ラジオボタンをクリックすると、パスワードの変更要素が表示されます)。

これはZend\Formで可能ですか、それともクライアント側のJavaScriptを使用して要素を表示および非表示にする必要がありますか?

4

1 に答える 1

2

可能ですが、そのようなことはクライアント側であるため、JavaScriptを使用する必要があります。個人的には、そのような作業には 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 ファイルを含める必要があります (または、ページの <script> タグにコードを埋め込むだけです)。

$(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();
   }
  });
 });
});

コードをテストしていないことに注意してください。その日の最初のコーヒーを実際に飲み終える前に頭の上に書いたので...いくつかのバグがあるかもしれません. そうは言っても、やりたいことの良いスタートになるはずです。何か足りないものや見つけられないバグがある場合は、ここで質問してください。お役に立てれば !

于 2012-07-22T12:08:42.723 に答える