在下拉列表的更改中填充多个隐藏字段

时间:2014-02-08 04:38:24

标签: javascript jquery struts2

我正在使用列表填充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设置为隐藏字段。 请指导我如何实现这个

3 个答案:

答案 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中创建settersAction class,然后用,分隔符

分割该字符串

我没试过这个......我认为它可能有用