我正在使用列表填充struts2选择下拉列表,如下所示
<s:select name="code" id="code" headerKey="-1" headerValue="Select" list="slist" listValue="code" listKey="id" onchange="changeLocation(this.selectedIndex)" />
slist包含id,code,country。 当从下拉列表中选择一个值(即代码)时,我需要将id和country都填充为隐藏字段。我成功填充id onchange代码发生如下所示
onchange="document.getElementById('locationValue').value=this.options[this.selectedIndex].text;"
但是当我试图找出一种如何在javascript函数中执行此操作的方法时,我可以在代码更改时将id和country设置为隐藏字段。 请指导我如何实现这个
答案 0 :(得分:0)
假设您的相应隐藏字段如下:
1)<s:hidden name="code" id="code-hidden"/>
2)<s:hidden name="country" id="country-hidden"/>
3)<s:hidden name="id" id="id-hidden"/>
并在列表中,相应的元素包含ids = "code, country, id"
(这些是下拉列表中的键)。然后您可以使用以下功能:
function dropdownChange(dropdown) {
for (var i=0; i<dropdown.options.length; i++){
if (i != dropdown.selectedIndex) {
var optionTmp = dropdown.options[i];
document.getElementById(optionTmp.value + "-hidden").value = optionTmp.text;
//or if you want to save the list value not text
//document.getElementById(optionTmp.value + "-hidden").value = optionTmp.value;
}
}
}
并在您的选择中使用它:
<s:select ... onchange="dropdownChange(this)" />
答案 1 :(得分:0)
尝试使用此代码
<s:select name="code" id="code" headerKey="-1" headerValue="Select" list="slist" listValue="code" listKey="id" onchange="setHiddenValue()" />
function setHiddenValue(){
var codeValue= $("#code option:selected").text();
var codeKey= $("#code").val();
$("#locationValue").val(codevalue);
}
答案 2 :(得分:0)
好的,如果我理解正确,这是你的要求
When the on change event happened you want to send the selected value and its index and another value to Action class
如果您确实需要上述要求
尝试一下它可以帮助
<s:select name="code"
id="code"
headerKey="-1"
headerValue="Select"
list="slist"
listValue="code"
listKey="id + ',' + country +','+ 'code'" />
在getter
中创建setters
和Action class
,然后用,
分隔符
我没试过这个......我认为它可能有用