获取按钮值javascript表达式语言

时间:2014-03-09 10:08:26

标签: javascript jstl

我有一个sumbit按钮从foreach jstl中的表达式语言中获取他的值,如下图所示,我希望当点击三个按钮分别获取它们的值到三个隐藏输入时,但是在运行时这个代码返回表达式语言中的第一个值

 <script>
 function myfunction()
 {
if(document.getElementById('demo1').value=""){
document.getElementById('demo1').value=document.getElementById('btn').value;
}else if(document.getElementById('demo2').value=""){
    document.getElementById('demo2').value=document.getElementById('btn').value;
}else
     {
    document.getElementById('demo3').value=document.getElementById('btn').value;
     }
}
   </script>
  <html>  
  <form:form action="Search" method="post">
  <input type="hidden" name="answer1" id="demo1">
  <input type="hidden" name="answer2" id="demo2">
  <input type="hidden" name="answer3" id="demo3">
  <c:forEach var="item" items="${group.subGroups}">
  <input id="btn" type="submit" 
  value="${item.subGroupName}" onclick="myfunction()">  
  </c:forEach> 
  <form:form>
  </html>

1 个答案:

答案 0 :(得分:2)

首先,使用==而非=进行相等性测试,用于分配值。所以

if(document.getElementById('demo1').value=""){
   [...]
}

成为

if (document.getElementById('demo1').value == "") {
   [...]
}

然后,如果您的JSTL forEach<input id="btn"...>个)输出了多个按钮,则必须提供多个id或使用其他方式引用它们;否则,浏览器如何知道您尝试访问哪个按钮?

另一种方式是:

 function myfunction(element)
 {
     if (document.getElementById('demo1').value == ""){
         document.getElementById('demo1').value = element.value;
     } else if (document.getElementById('demo2').value == ""){
         document.getElementById('demo2').value = element.value;
     } else {
         document.getElementById('demo3').value = element.value;
     }
 }

[...]

<input type="submit" value="${item.subGroupName}" onclick="myfunction(this)">