在javascript中获取<s:select>的选定listValue </s:选择>

时间:2012-04-28 01:14:10

标签: javascript struts2

我使用struts标签来显示项目列表。

<s:select name="example" id="example" list="exampleList" listKey="exampleKey" 
listValue="exampleValue" onchange="fun()"/>

现在我有一个javascript函数:

function fun()
{
  var ex=document.getElementById("example");
  alert(ex.value);
}

在这个函数中,我需要获取所选项的listValue,但是当我使用上面的代码时,它只是提醒我我选择的listKey。如何在javascript函数中获取listValue而不是listKey?

3 个答案:

答案 0 :(得分:2)

  $(document).ready(function() {
        $('#reminderTypeID').change(function() 
       {
             var ex = document.getElementById("reminderTypeID");    
        var selTex = ex[$('#reminderTypeID').val()].text;
        var selVal = ex[$('#reminderTypeID').val()].value;
        alert(ex[$('#reminderTypeID').val()].text);  
      });
   });

答案 1 :(得分:1)

试试这个(为我工作):

function fun()
{
    var ex = document.getElementById("example");
    alert(ex.getAttribute('listValue'));
}

修改
添加小提琴:http://jsfiddle.net/FranWahl/Ur6jT/2/
(不知道为什么它对你不起作用。在小提琴中它起作用。)

答案 2 :(得分:0)

我遇到了同样的问题,其他答案都没有对我有用。这是我发现的解决方案:

    $(document).ready(function(){
        $("#example").change(function(){
            var options = document.getElementById("example").options; 
            var selectedIndex = document.getElementById("example").selectedIndex; 
            var selectedOptionText = options[selectedIndex].text;
            var selectedOptionValue = options[selectedIndex].value;
            console.log("Id of selected option is: " + selectedOptionValue);
            console.log("Text of selected option is: " + selectedOptionText);   
        });
    });

为了进一步理解这个问题,它有助于思考处理JSP时创建的HTML。 <s:select>将生成以下HTML:

<select id="example" name="example">
    <option value="456">TextA</option>
    ...
</select>

根据OP的示例代码,“{45}”将来自exampleKeyexampleValue中的“TextA”。 <option>中的每个项目都会有这样的HTML exampleList

请注意,在我的解决方案中,我使用了jQuery .change()函数。然而,我也尝试了onchange="fun()"的解决方案,正如OP所做的那样,而且也有效。

当我尝试用document.getElementById("example")替换$("#example")时,解决方案工作。

<select>选项selectedValue上阅读this reference也很有帮助。