需要一些帮助找出最简单的提交方式(仅因为我需要在下拉列表中检索所选值,所以我可以在同一个jsp中的其他sql select中使用它) -
这是有效的(填充下拉列表并在更改时触发) -
<select name="assettypeid" id="assettypeid" onchange="typechanged();">
<sql:query var="queryresults" dataSource="jdbc/database">
SELECT id, name FROM assettype
</sql:query>
<option value="">-- Please Select --</option>
<c:forEach var="row" items="${queryresults.rows}">
<option value="<c:out value="${row.id}"/>"
<c:if test="${row.id == param.assettypeid}">
<c:out value="selected"/>
</c:if>
<c:out value="${row.name}" />
</option>
</c:forEach>
</select>
这是有效的(提取并确认所选的id) -
function typechanged() {
if(document.getElementById("assettypeid").selectedIndex == 0) {
var typechosen = '%';
alert(typechosen);
return typechosen;
}
else {
var typechosen = document.getElementById("assettypeid").value;
alert(typechosen);
return typechosen;
}
}
现在我想提交,所以我可以 -
String typeselected = request.getParameter("assettypeid");
但我没有这样的表单或表单名称(如果可以避免,我宁愿不创建一个,因为我的整个页面也有一个刷新计时器,并且表单似乎每次刷新时重新运行表单提交)。
因此,javascript函数应该只提交一次(当assetype更改时)并将我返回到相同的URL /页面,而不会收到我在同一页面刷新的浏览器的警告。
赞赏的想法(我是新手所以需要尽可能多的笔记)。
此致 拉尔夫
答案 0 :(得分:0)
您可以创建一个javascript函数,您可以在其中通过ajax发送所需的值,并在onchange
事件上调用该函数。
<script>
function setValues() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200)
{
// store the data retrieved
document.getElementById("demo").innerHTML = this.responseText;
}
else {
alert(" Request not successful");
}
};
xmlhttp.open("GET", "url?assettypeid=" + typechosen, true);
xmlhttp.send();
}
</script>
使typechosen
成为全局变量
在onchange
事件中,您可以这样称呼它:
<select name="assettypeid" id="assettypeid" onchange="typechanged();setValues();">
您可以按如下方式在jsp上创建div
:
<div id="demo></div>
请勿忘记将div
放在<script>
标记之前,以便该功能可以获得id