通过复选框更改列表框的内容

时间:2016-11-11 09:21:37

标签: javascript

我想更改动态列表框,但我不知道该怎么做。

选中复选框时 我想更改列表框的内容。

// getPageFileData -> Data acquisition with Ajax..
var retData = getPageFileData(productSeq, 3);

var linkArray = [{text:"Select Page", value:""}];
for (var i = 0; i < retData.PageList.length; i++) {
  linkArray.push({ text: retData.PageList[i].page_title, value:   retData.PageList[i].page_id });
}

// set linkArray
linkCustomLinkCtrl = {
  disabled: data.customType && data.customType == "2" ? false : true,
  name: 'customLink',
  type: 'listbox',
  label: 'CustomLink',
  values: linkArray
};


linkCustomLinkOtherCtrl = {
  disabled: data.customType && data.customType == "2" ? false : true,
  name: 'customLinkCheck',
  type: 'checkbox',
  checked: false,
  text: 'OtherProduct',
  onclick: function (e) {
    if (e.control.value()) {
      var retData = getPageFileData("", 3);
      var linkArray = [{ text: "Select Page", value: "", type: "menuitem" }];
      for (var i = 0; i < retData.PageList.length; i++) {
        linkArray.push({ text: retData.PageList[i].page_title, value: retData.PageList[i].page_id, type: "menuitem" });
      }
      var replaceSelect = new Array();
      for (var i = 0; i < linkArray.length; i++) {
        replaceSelect.push(linkArray[i]);
      }
      // -------------------------------------
      // Is not it like this?
      win.find("#customLink")[0]._values = replaceSelect;
      // -------------------------------------

      console.dir(win.find("#customLink"));
    }
  }
}

首先是不是重写_values的方法? 对不起,我的英语很差......

1 个答案:

答案 0 :(得分:0)

我不知道在哪里正确设置它。 我将其设置如下,并且完成了。

var linkList = win.find("#customLink")[0];
if (linkList.menu) {
    linkList.value(null);
    linkList.menu = null;
    linkList.settings.menu = replaceSelect;
}
linkList._values = replaceSelect;
linkList.settings.values = replaceSelect;
linkList.state.data.menu = replaceSelect;

这是对的吗? 暂时问题已经解决了。