dijit.form.Select将不设置值编程(dijit.form.Select won'

2019-09-18 10:05发布

我在我有一个dijit.form.Select其选定值我试图通过各种方式动态地设置一个动态道场形式。 我得到的选择控件加载和显示数据,但它总是忽略我的每一次尝试。 我使用的道场1.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的价值。 我也试过这个代码的编程完全版本。 我已经开始在设定值,当你从商店选择是行不通的结论。 这并工作,但它不是动态的。

              <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>

Answer 1:

看看这里,我相信这确实你的道场方式想要的东西:

设置dijit.form.Select插件的值(选择的选项)

如果没有,你总是可以只使用实际的DOM选择对象和直接使用JavaScript:

如何编程方式设置使用javascript选择框元素的值?



Answer 2:

究其原因最有可能的是,youre设法设置“searchAttr”的值。 相反,你会想值设置为“标识符”。

答案就在这里,检查底部货架超时功能: http://jsfiddle.net/TTkQV/4/

关键是要设置为你设置option.value(未option.innerHTML)的值。

normalSelect.set("value", "CA");
filteringSelect.set("value", "AK");


文章来源: dijit.form.Select won't set value programmatically