如何在XPages CSJS中选择一个组合框值
How in XPages CSJS should I select a ComboBox value?
我在ComboBox的'onChange'事件中使用CSJS,当用户选择一个值时,我想要设置一个EditBox和第二个ComboBox(第二个ComboBox值是一个已经在列表中,我只想选择它)。
在我的'onChange'事件中设置编辑框,我使用:
XSP.getElementById("#{id:fldEditBox}").value = newEditBoxValue;
但是在ComboBox中选择一个值要困难得多。首先,我使用了EditBox方法:
XSP.getElementById("#{id:fldComboBox2}").value = selectedComboBoxValue;
屏幕上的值改变了,ComboBox功能正常,保存文档时仍然是旧的值
我尝试了各种各样的东西,如selecteindex,但没有工作。最后我发现:
document.getElementsByName("#{id:fldComboBox2}")[0].value = selectedComboBoxValue;
意味着更改被保存,但在屏幕上不可见,所以在我的最终产品代码中,我使用了这两种方法,它可以工作:
XSP.getElementById("#{id:fldComboBox2}").value = selectedComboBoxValue;
document.getElementsByName("#{id:fldComboBox2}")[0].value = selectedComboBoxValue;
这对我来说似乎很丑陋,在CSJS中一定有更好的方法来做到这一点,有人知道吗?
在香草JavaScript中设置select元素(组合框)的值的方法是遍历元素的options
属性以找到您想要选择的选项:
var comboBox = document.getElementById("#{id:comboBox}");
for (var i=0; i < comboBox.options.length; i++) {
if (comboBox.options[i].value == "ValueYouWantSelected") {
comboBox.options.selectedIndex = i;
break;
}
}
如果你有可用的JQuery,你可以做得更优雅:
var xpageID = "#{id:comboBox}".replace(/:/gi, "'':");
var valueYouWantSelected = "someValue";
$('#' + xpageID + ' option[value="' + valueYouWantSelected + '"]').prop('selected', true);
xpageID变量的存在是因为您必须转义XPages放入生成的id中的':'字符,以便它与JQuery选择器引擎一起工作。
相关文章:
- 将一个组合框值传递给其他组合框
- 将多个表格作为一个组合表格提交
- 获取一个组合框值作为innerhtml
- extjs基于另一个组合框值过滤组合框
- 使用组合框填充另一个组合框,以便用户可以运行查询
- 如何根据另一个组合框的选定项目从数据库填充组合框中的项目
- Knob.js-有没有一种方法可以连接表盘,使它们有一个组合的总数
- 如何制作一个组合框,允许我根据选择显示数据
- 如何使用Javascript禁用在另一个组合框中选择的组合框的值
- 基于另一个组合框选择的自动填充组合框
- Browserify-require()一个组合字符串不会将模块构建到输出脚本中
- 如何在XPages CSJS中选择一个组合框值
- 是否有一种方法来放置一个树列在一个组合框
- 从组合框和文本输入字段中为另一个组合框赋值
- php、javascript和mysql如何连接到一个组合,如果点击,则通过另一个查询进入另一个组合
- ExtJS:连接一个存储到一个组合框
- ExtJS使一个组合项目不同
- 使用gulp-angular-templatecache创建一个组合HTML模板文件时,输出文件夹无效
- 通过更改第二个组合框来更新一个组合框
- 如何在HTML中使用另一个组合框来控制一个组合框