2017-09-20 1 views
0

私のタイトルが適切であることを願っています:私はEntityTypeとしてフォームから来て、値はエンティティクラスからのものです。コード:Symfony:データベースエントリを持つドロップダウン選択に依存するフォーム要素を隠す/表示する

->add('type', EntityType::class, array(
     'class' => 'DocumentBundle:DocumentType', 
     'label' => 'label.type', 
     'property' => 'translationKey', 
     'required' => true, 
     'multiple' => false, 
     'expanded' => false, 
     'empty_value' => 'label.select_type', 
     'choice_translation_domain' => 'Documents' 
    )) 
    ->add('vka_number', 'text', array(
     'label' => 'label.vka_number', 
     'required' => false, 
     'translation_domain' => 'Documents')) 

秒1は、そのドロップダウンリストから特定の値が私の小枝テンプレートで を選択したときに、私はのみ表示するテキストフィールド(vka_number)がある私は、要素のレンダリング:

<div class="row"> 
    <div class="col-md-6" id="documentDropdown"> 
    {{ form_row(form.type) }} 
    </div> 

    <div class="col-md-6" id="vka"> 
    {{ form_row(form.vka_number) }} 
    </div> 
</div> 

私はそのようなJavaScript関数を考えていた:

<script> 
    $(document).ready(function(){ 
    $('#documentDropdown').on('change', function(){ 
     if (this.value == 'Contract') 
     { 
     $('#vka').show(); 
     } 
     else { 
     $('#vka').hide(); 
     } 
    }); 
    }); 
    </script> 

が、それは働いていないと私はそれはトン以来のドロップダウンから値にアクセスすることはできませんので、これがあると思いますちょっとハードコードされていませんが、データベースエントリです。 'Contract'は、vka_numberテキストフィールドを表示させるエントリ(id = 1)です。

+0

あなたは '#vka' idをいつ隠したいのですか?リスト内のContractアイテムは実際には 'value =" 1 "'ではなく、 'value =" Contract "ではないことがわかりました。私は 'value =" 1 "'だけで動作するようにjsfiddleを更新しました。言い換えれば、 'if(this.value == '1')' –

+0

「契約」が選択されている場合を除いて、常に非表示にしたいと思っています。選択した値にアクセスするためのさまざまな可能性を試してみてください。 – sonja

+1

私は自分の答えとjsfiddleを更新しました。 '1'の契約値で動作するはずです。それを試してみてください。 –

答えて

1

ここに最終的に私の問題を解決した私のjavascriptの機能です。

$(document).ready(function() { 
    $('#type ').change(function() { 
     if ($('select[id$="_type"]>option:selected').text() == "Contract") { 
      $('#vka_number ').show(); 
     } 
     else { 
      $('#vka_number').hide(); 
     } 
    }); 
}); 
+0

はい、これは機能します。あなたはそれが働いてうれしい!時間をかけてJavascript/jQueryをデバッグする方法を学ぶことは、長期的には役に立ちます。 –

+0

ありがとう@AlvinBunk。はい、私は間違いなくそれに取り組んでおり、より良くしようとしています! :) – sonja

1

your previous question Sonjaからhtmlコードをコピーしました。あなたは同じ質問を続けているようです。私はこのjsfiddleでそのコードを使用:

https://jsfiddle.net/alvinbunk/to9qodwx/

あなたは間違っているかを把握するためにあなたのjQueryのコードを試してjsfiddleを使用することができます。あなたが見ることができるように、コードは機能し、vkaのid divisionを隠します。値はデータベースのものであるという事実とはまったく関係がありません。 HTMLコード内のさまざまな要素にIDが重複していないことを確認してください。レンダリングされたコードを表示するには、ブラウザで「ビューソース」を使用します。

私はこの回答で少なくとも15分を費やしましたが、もう1つは15-30分でした。 StackOverflow上の人は非常に忙しいことに注意してください。あなたの質問を非常にはっきりと聞くのは良いことです。


EDIT#2 - コメント

に基づき、このjQueryのコードを使用します。

<script> 
$(document).ready(function(){ 
$('#documentDropdown').on('change', function(){ 
    if (this.value == '1') 
    { 
    $('#vka').show(); 
    } 
    else { 
    $('#vka').hide(); 
    } 
}); 
}); 
</script> 

動作する必要があること。

+0

もう1つは別のトピックに関する新しい質問が出されました(ドロップダウンの内容を表示する)と私は正直なところ、私はより正確になる方法を知りません。私が持っているすべてのコードを提供し、私の問題が何であるかを正確に説明しました。あなたのJSフィドルは私が試してみるとうまくいきません。特に私は自分のコードを変更して以来(あなたはハードコードされたバージョンでフィドルを作ったが、現在はフォームタイプのバージョンを使用している) – sonja

+0

"あなたのコード"が私のjsfiddleからの変更を処理していないのですか?それは動作しないjsfiddle異なるです!私はもう一度チェックし、jsfiddleは期待通りに動作します。つまり、リストから何かを選択すると、 'vka' id divタグセクションが非表示になります。実際にはあなたのコードが動作していない場合:私はあなたの "ソースを見る"というHTMLコードをどこかに投稿して、私たちがそれを見ることができるようにします。 pastebinに投稿してリンクを追加できますか?または、新しいjsfiddleを作成しますか? –

+0

他にどのように説明できるか分かりません。私のコードはデータベースエントリにリレーします。私はこれらのデータにJSfiddleをどのように接続できるかはわかりません。あなたのJSfiddleも私のコードも動いていません。単純に質問:JavaScriptが実際に私の小枝のコードではなく、自分のDBだけにある場合、選択された値にどのようにアクセスできますか?上記のように私は私のフォームを介して値を取得します。私の小枝ファイルには、ドロップダウンの要素の名前が付けられてJSがそれに関連する部分はありません。そのような機能はまったく正しいですか?はいの場合、 '契約'の部分が間違っていて、それを変更する方法を知りたいのですが... – sonja

関連する問題