0

選択した値を変更したいドロップダウンリスト(yiiフレームワーク)があります。これはドロップダウンリストです:

<?php
                $t = is_null($dataProvider[$key]['room']) ? 'NA' : $dataProvider[$key]['room'];

                echo 'Room Number : ' . CHtml::dropDownList(Rooms::model(), 'roomID', CHtml::listData(Rooms::model()->findAll(array(
                                    'condition' => 'status = :status or roomID = :roomID',
                                    'params' => array(
                                        ':status' => 'ready',
                                        ':roomID' => $dataProvider[$key]['room']
                                    )
                                )), 'roomID', 'roomID'), array('id' => 'room', 'class' => 'ui-widget-content', 'empty' => 'NA',
                'options' => array($t => array('selected' => true))))
                ;
                ?>

このドロップダウンリストは、クローンしたい親の子であるため、再度使用できるので、これを使用してクローンを作成しました。

var test =$("#users-contain").children(':last').clone(true,true);
        test.children("#room option[value='3']").attr('selected', 'selected');
        test.children('table').children('tbody').children('tr').empty();
        var inner = test.clone(true,true);

var inner を使用して要素のいくつかを変更し、ページ上で複製します。ここに私の問題があります。変数テストである私の新しいクローンについて、ドロップダウンリストの選択された値を変更したいのですが、まったく機能しません。これを試しました:

test.children("#room option[value='3']").attr('selected', 'selected');

この :

test.children('#room').val(3);

何も機能しません。覚えていない他のことも試しましたが、次の方法でデバッグするときに、最後のものを使用することに注意してください。

console.log(test.children("#room").val());

正しい「3」の値を出力しますが、ページに表示すると、古いドロップダウンリストの選択された値は変更されません。これは結果です:

<select id="room" class="ui-widget-content" name="">
<option value="">NA</option>
<option value="1">1</option>
<option value="2" selected="selected">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
</select>

前もって感謝します。

4

1 に答える 1

0

test.children("#room option[value='3']").attr('selected', 'selected')には基本的な考え方がありchildrenますが、子要素のみを取得してそれらをフィルター処理します。したがって、 は取得されますが、は の孫であるため、要素#roomは取得されません。代わりに、すべての子孫要素を検索する を使用します。コードは次のとおりです。option<option>testfind
test.find("#room option[value='3']").attr('selected', 'selected')

于 2012-08-11T11:39:26.293 に答える