3

さまざまな方法で動的に設定しようとしたdijit.form.Selectの選択値を持つ動的道場フォームがあります。選択ウィジェットを取得してデータをロードして表示しますが、すべての試行を常に無視します。dojo1.7を使用しています。

        var bcntryval = <?= $this->billingContact->countryId;?>;
    var countryStore;



    function onBillingShow() {
        if (countryStore) countryStore.close();
        countryStore = new dojo.data.ItemFileReadStore({url: 'CartUtilities.php?action=getcountries'});
        dijit.byId("bcntry").setStore(countryStore, bcntryval);  // does not set value! but does set the store
        dijit.byId("bcntry").attr('value', String(bcntryval)); // doesn't set the value either
                    dijit.byId("bcntry").set('value', bcntryval));  // nor does this!
    }

bcntryウィジェットのマークアップは次のとおりです。

<td><input data-dojo-type="dijit.form.Select" style="width: 10em;" data-dojo-props="sortByLabel:false, maxHeight:'-1'" data-dojo-id="bcntry" id="bcntry" name="bcntry" />

私は道場の学習にかなりの時間を費やしました。それがうまく機能するとき、しかしドキュメントは望まれることがたくさん残っています!dijit.form.FilteringSelectでも同様の問題が発生しています。また、javaScriptを介した値の設定も無視されます。このコードの完全にプログラム的なバージョンも試しました。店舗から選択する場合、値の設定は機能しないという結論に達しました。このDIDは機能しますが、動的ではありません。

              <div name="scntry" data-dojo-type="dijit.form.Select" data-dojo-props="maxHeight:'-1',sortByLabel:false" value="<?= $this->shippingContact->countryId;?>" >
              <?php foreach($this->countryList as $c):?>
                 <span value="<?= $c->id;?>"><?= $c->name;?></span>
              <?php endforeach;?>         
              </div>
4

2 に答える 2

3

最も可能性の高い理由は、あなたが「searchAttr」の値を設定しようとしているためです。代わりに、値を「識別子」に設定する必要があります。

答えはここにあります、一番下の棚のタイムアウト機能をチェックしてください:http: //jsfiddle.net/TTkQV/4/

秘訣は、option.value(option.innerHTMLではない)を設定するのと同じように値を設定することです。

normalSelect.set("value", "CA");
filteringSelect.set("value", "AK");
于 2012-06-23T19:56:43.183 に答える
0

ここを見てください、私はこれが道場の方法であなたが望むことをすることを信じています:

dijit.form.Selectウィジェットの値(選択されたオプション)の設定

そうでない場合は、いつでも実際のdom選択オブジェクトを使用して、ストレートJavascriptを使用できます。

javascriptを使用して選択ボックス要素の値をプログラムで設定するにはどうすればよいですか?

于 2012-06-23T17:26:14.753 に答える