0

2つの選択ドロップダウンがあり、2番目の選択ボックスのオプションを1番目の選択に従って変更する必要があります。フォームは

<form action="" method="post" >
        <div style="padding-bottom:6px;">
            <select id="portfolios" name="portfolio" style="width: 200px; height:25px;">
                <option selected="selected" value="default">Select Portfolio</option>
                {% for portfolio in portfolios %}
                    <option get-groups="{{ path('v2_pm_patents_getgroups') }}" value={{ portfolio.id }}>{{ portfolio.portfolioName }}</option>
                {% endfor %}
            </select>
            <span>OR</span>
            <a class="modalbox1" href="#inline1">[Add New Portfolio]</a>
        </div>

        <div style="padding-bottom:6px; display:none;" id="groups">
            <select id="portfolio-groups" name="portfolio-groups" style="width:200px; height:25px;">
                <option selected="selected" value="default">Select Portfolio Group</option>
            </select>
            <span> OR</span>
            <a class="modalbox2" href="#inline2">[Add New Group]</a>
        </div>
</form> 

最初の選択からオプションを選択すると、最初は2番目のドロップダウンが非表示になります。私が書いたJQueryは

<script>
    $(document).ready(function(){
        $('#portfolios').change(function() {
            $('#groups').show();
            var id = $("#portfolios").val();
            var url = $('option:selected', this).attr("get-groups");
            var data = {PID:id};
            $.getJSON(url, data, function(result) {
                var options = $("#portfolio-groups");
                $.each(result, function(item) {
                    options.append($("<option />").val(item.id).text(item.name));
                });
            });
        });
    }); 
</script>

私が呼び出すControllerメソッドは

public function getgroupsAction(Request $request){
    if ($request->isXmlHttpRequest()) {

        $id = $request->get("PID");
        $em = $this->getDoctrine()->getEntityManager();
        $portfolio_groups = $em->getRepository('MunichInnovationGroupPatentBundle:PmPatentgroups')
        ->getpatentgroups($id);
        echo json_encode($portfolio_groups);
        return new Response();
    }
}

クエリとJSonオブジェクトから正しいグループを取得します。応答のオブジェクトは次のようになります

[{"id":"09c0d4b2-ac25-11e1-96a5-9787dec335c2","name":"Group 2","description":"No Description Provided for this Group","order":500000,"is_deleted":false}] 

私のJQueryでは、選択ボックスにオプションを追加していますが、問題はオプションを追加することですが、値が空でテキストがありません。したがって、text属性もvalue属性も表示されず、空のオプションが追加されます。

私が間違っていることは何ですか?オプションを追加する前に選択ボックスをクリアするにはどうすればよいですか?

前もって感謝します

4

3 に答える 3

0

この場合は使用できません.val()。あなたは使用する必要があります.attr("value",item.id)

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

このデモを見る

$("#mSelect").append($("<option />").val('1').text('-- Select --'));

var myOptions = response.d;
                var mySelect = $("#MainContent_ddlnewType");
                mySelect.children().remove();
                //mySelect.append($("<option>").val("00").text("-- Select Type --"));
                for (var i = 0; i < myOptions.length; i++) {
                    var val = myOptions[i].Id;
                    var text = myOptions[i].Name;
                    mySelect.append($("<option>").val(val).text(text));
                }
于 2012-08-22T13:28:19.757 に答える
0

JSON応答を配列内にラップしているようです。$.eachこのようitem[0].nameに内部の要素にアクセスしてみてくださいitem[0].id

次に、複数のオブジェクトを取得し、アイテム配列をループすることを考慮する必要があります

于 2012-08-22T14:06:25.400 に答える