我正在处理JSP页面,我需要始终在该JSP页面上显示下拉列表的选定值。以下是我的例子 -
<p style="font-weight: bold">Limit</p>
<select id="limit" name="limit">
<option value="10">10</option>
<option value="20">20</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
我的页面第一次加载时,我想显示从上面的下拉列表中选择的10个值。现在,如果我从上面的下拉列表中选择20并提交表单,我需要通过始终保持下拉列表的状态在该下拉列表中显示20,所以我使用下面的代码 -
<%
String limit = request.getParameter("limit");
%>
<script>
document.getElementById("limit").value = '<% out.print(limit); %>';
</script>
但不知何故,每当我第一次加载页面时,我总会在Limit
下拉框前面看到空白字段,然后如果我从该下拉列表中选择20
并再次提交表单,然后我可以在该下拉列表中看到20 selected
,如果我选择50,然后再次提交表单,那么我还可以在该下拉列表中看到50个。
唯一的问题是我第一次加载页面时,它总是在下拉列表中显示空白字段作为选定值,这不是我想要的,我想在页面是第一次自动选择10第一次装载。
答案 0 :(得分:1)
第一页加载没有设置请求参数。一个简单的解决方案可能是:
<%
String limit = request.getParameter("limit");
if (limit == null) {
limit = "10";
}
%>
答案 1 :(得分:1)
您可以在<script>
附近添加条件:
<% if (limit != null) { %>
...
<% } %>
或者你可以使用jquery(它几乎总是javascript的一个好选项),它选择<option>
的方法不会产生这种效果。
答案 2 :(得分:1)
您的代码中没有“默认”赋值,因此您的值赋值是将limit
的值分配给下拉列表,该值在第一次加载时可能为null。听起来这会导致一个空白选项。
您有两种选择。第一个:如果其中一个现有值应该是默认值,如果没有值,则将其分配给limit
:
<%
String limit = request.getParameter("limit");
limit = (limit == null) ? DEFAULT_VALUE : limit;
%>
或者,如果其中一个现有值不适合默认值,则应在选项列表中提供一个空的替代值:
<select id="limit" name="limit">
<option value="">-- SELECT ONE --</option>
<option value="10">10</option>
<option value="20">20</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
希望这有帮助。
请注意:通过将limit
的值插入到您的网页中,您违反了网络安全的主要规则:切勿将用户输入回显到页面而不会忽略它。考虑如果将script
标记包含为limit
...
答案 3 :(得分:1)
使用javascript很酷,但您可以使用HTML功能进行选择,查看http://www.w3schools.com/tags/tag_option.asp上<option selected ...>
的说明
所以你的JSP可以被重写:
<select id="limit" name="limit">
<option value="10" selected>10</option>