Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript dojo动态加载DropDownSelect小部件_Javascript_Dojo - Fatal编程技术网

Javascript dojo动态加载DropDownSelect小部件

Javascript dojo动态加载DropDownSelect小部件,javascript,dojo,Javascript,Dojo,我有两个DropDownSelect小部件添加到我的中,我需要的是在第一个DropDownSelect小部件更改时动态加载第二个DropDownSelect小部件中的数据。如何以编程方式加载DropDownSelect小部件中的数据 Abdul khaliqDropDownSelect有一个“onChange”方法,您可以通过一个匿名函数为第二次选择创建选项列表,使用类似addOption的方法: var s1 = new dojox.form.DropDownSelect(); var s2

我有两个DropDownSelect小部件添加到我的中,我需要的是在第一个DropDownSelect小部件更改时动态加载第二个DropDownSelect小部件中的数据。如何以编程方式加载DropDownSelect小部件中的数据

Abdul khaliq

DropDownSelect有一个“onChange”方法,您可以通过一个匿名函数为第二次选择创建选项列表,使用类似addOption的方法:

var s1 = new dojox.form.DropDownSelect();
var s2 = new dojox.form.DropDownSelect();
s1.onChange(function() {
  s2.addOption(new Option("text","value"));
});

我想你需要这样的东西:

      dojo.connect(s1, 'onChange', function(value) {

      console.log(value); // selected in s1 value

      s2.addOption([{ 
        label: "new option1", value: 1
      },
      { 
        label: "new option2", value: 2
      },
      { 
        label: "new option3", value: 3
      }]);
    });
在上面的示例中,当s1的选定值更改时,我们将3个新选项加载到s2中。只能将一个选项传递给addOption方法而不是数组:

    s2.addOption({ label: "new option1", value: 1 }
可能您也希望首先清除s2:

    s2.options = [];

谢谢你的帮助!还有一件事,当我添加新选项时,控件没有正确地出租,即小部件确实带着一个新选项而带着空文本下拉。我看到一个空的但正在扩展的下拉列表。我使用标记并通过dijit.byId(…)获取小部件的引用使用add Option(添加选项)方法添加选项。因此,当我选择选项时,我会在alter(更改)对话框的第二个下拉选择中看到所选选项的值。是的,这正是我需要的,我正在使用Struts2通过SMD方法加载数据。如果我用javascript硬编码这些值,上面的代码可以正常工作,但是当我从服务器端加载Json字符串时,该函数不起作用。这是我的java脚本代码。dojo.connect(s1,'onChange',function(value){console.log(value);//在s1值var valuefromserver=“{label:\'newoption1\”,value:1},{label:\'newoption2\”,value:2},{label:\'newoption3\,value:3}中选择;s2.addOption([valuefromserver]);});任何建议您的代码都无法运行,因为valuefromserver是字符串,但应该是数组(javascript对象)。我不知道Struts,但在dojo.xhrGet中,可以指定“handleAs:json”选项来自动将服务器字符串转换为对象。为了让代码正常工作,您可以手动将字符串转换为JS对象:valuefromserver=dojo.fromJson(“[”+valuefromserver+“]);然后调用:s2.addOption(valuefromserver);添加选项