我的JSP页面上有两个组合框。它们的值来自JSON页面。当您从第一个组合框中选择一个值时,将根据第一个组合框的id列出第二个组合框值。第一个组合框用于国家名称,第二个用于城市名称。
<select onchange="ListCities()" id="ListCountries">
<% String CountryId,CountryName;
for(int k=0;k<= jsonarray.length()-1;k++ )
{
CountryId = jsonarray.getJSONObject(k).get("id").toString();
CountryName = jsonarray.getJSONObject(k).get("name").toString();
out.print("<option value=" + CountryId +">" +CountryName+ "</option>");
}
%>
</select>
<select id="ListCities">
<% String CityId,CityName;
for(int k=0;k<= jsonIlArray.length()-1;k++ )
{
CityId= jsonCityArray.getJSONObject(k).get("id").toString();
CityName= jsonCityArray.getJSONObject(k).get("name").toString();
out.print("<option value=" + CityId+">" +CityName+ "</option>");
}
%>
function ListCities() {
var CountryIdFromCB = document.getElementById("CountryList").value;
document.location.href = ('?CountryId='+ CountryIdFromCB);
}
组合框的值正常工作。当您从第一个组合框中选择任何项目时(第二个框根据第一个组合框的id列出),JSP页面将第一个组合框的id作为参数传递给第二个组合框。但是,刷新页面时,所选的组合框项目将消失。我想保留第一个组合框的值,即使用户从第二个组合框中选择任何项目。
我不想使用JQuery,我正在寻找纯粹的Javascript解决方案。
谢谢,马克
答案 0 :(得分:0)
该问题与'selectedIndex'无关。它与选择选项的“选定”属性有关。
您丢失了所选的第一个下拉列表,因为您没有处理“已选择”属性。这是第一个下拉列表的代码:
<select onchange="ListCities()" id="ListCountries">
<%
String CountryId,CountryName;
for(int k=0;k<= jsonarray.length()-1;k++ )
{
CountryId = jsonarray.getJSONObject(k).get("id").toString();
CountryName = jsonarray.getJSONObject(k).get("name").toString();
if (CountryId.equals(request.getParameter("CountryId")))
{
out.print("<option value=" + CountryId +" selected>" +CountryName+ "</option>");
} else
{
out.print("<option value=" + CountryId +">" +CountryName+ "</option>");
}
}
%>
</select>