通过JSON接收数据时,清除子下拉列表中的旧选项
Clean old options from child dropdown when receiving data by JSON
我通过父下拉列表(第一个下拉列表)中的onchange事件来填充子下拉列表(第二个下拉菜单)。之后,通过更改子下拉列表事件,我将自动填充三个文本框。但我的问题是第一个下拉列表。第一个下拉列表的Id为combo
,第二个下拉列表为combo1
。
当我从第一个下拉列表中选择A
,然后在第二个下拉列表,通过在auto.jsp中添加下面写的javascript,我得到了一个值1
。但当我在第一个下拉菜单中选择选项B
,然后我在第二次下拉菜单中得到了2
,但旧的值1应该从第二个菜单中删除,但它仍然保留在那里,为什么?类似地,当我从第一个下拉列表中多次选择A or B
时,我想删除的第二个下拉列表中将出现多个值1或2,并显示一次,也就是说,如果选择A
,则显示1
,如果选择了B
,则显示了2
,如何做到这一点?
auto.jsp
<script type="text/javascript">
$(document).ready(function() {
$("#combo").change(function() {// by onchange event in first dropdown I populate second dropdown having id combo1
$.getJSON('combo1.jsp', {firstcombobox : this.value}, function(responseData) {
$("#combo1").append(
$("<option></option>").html(responseData.name).val(responseData.name)
);
});
});
// After getting value in second dropdown, by onchange event i am autofilling 3 textboxes.
$("#combo1").change(function() {
$.getJSON('combo2.jsp', { combo1Val : $(this).val() }, function(data) {
$("#firsttextbox").val(data.name);
$("#secondtextbox").val(data.roll_no);
$("#thirdtextbox").val(data.fine);
});
});
});
</script>
<body>
//First dropdown
<select id="combo" name="firstcombobox">
<option value="">select</option>
<option value="a">A</option>
<option value="b">B</option>
</select>
// Second dropdown
<select id="combo1" name="combo1Val" >
<option value="">select</option>
</select>
</body>
combo1.jsp
<%@page import="net.sf.json.JSONObject"%>
<%@page import="net.sf.json.JSONArray"%>
<%
String firstcombobox=request.getParameter("firstcombobox");
if(firstcombobox.equalsIgnoreCase("a")){// If selected value in first dropdown is A then 1 will be displayed as written below
JSONObject arrayObj= new JSONObject();
arrayObj.put("name","1");// I displayed 1 in second dropdown option when A is selected
response.setContentType("application/json");
response.getWriter().write(arrayObj.toString());
}
else if(firstcombobox.equalsIgnoreCase("b")){
JSONObject arrayObj= new JSONObject();
arrayObj.put("name","2");
response.setContentType("application/json");
response.getWriter().write(arrayObj.toString());
}
else{
}
%>
在auto.jsp
'#comb'中更改匿名函数,替换为:
$.getJSON('combo1.jsp', {firstcombobox : this.value}, function(responseData) {
$("#combo1").append(
$("<option></option>").html(responseData.name).val(responseData.name)
);
});
带有:
$.getJSON('combo1.jsp', {firstcombobox : this.value}, function(responseData) {
$("#combo1").empty().append(
$("<option></option>").html(responseData.name).val(responseData.name)
);
});
要将字符串拆分为数组,请查看以下内容:如何拆分字符串,在特定字符处打断?
他们使用如下:
$.getJSON('combo1.jsp', {firstcombobox : this.value}, function(responseData) {
var splitValues = responseData.name.split(/,/);
$("#combo1").empty().append("<option value="0">Please select...</option>");
for (var idx in splitValues) {
$("#combo1").append(
$("<option></option>").html(splitValues[idx]).val(splitValues[idx])
);
}
});
希望这有帮助?
相关文章:
- 使用Ajax或JavaScript选择下拉列表选项后,在同一页面上执行PHP脚本
- webforms:在javascript中动态添加下拉列表选项
- 动态下拉列表选项在添加多列后未填充
- 如何在从代码后面显示之前,在弹出窗口中选择预先填充的下拉列表选项
- 删除基于先前下拉列表选择的“选择下拉列表”选项
- Yii-如何获得下拉列表选项值与列表中的文本相同
- 动态生成的下拉列表选项的挖空绑定
- 如何阻止用户选择下拉列表选项而不“禁用”它
- 使用JavaScript / jQuery向价格计算器添加下拉列表选项
- 用省略号设置下拉列表选项
- 如何使用服务器生成的数组中的值动态更新下拉列表选项
- html下拉列表选项
- 为依赖下拉列表选项提供一个值以创建函数
- 如何根据下拉列表选项弹出单选按钮供用户输入
- ASP.. NET下拉列表选项取决于其他下拉列表中选择的选项
- jQuery基于下拉列表选项更改文本
- 获取字符串,但不获取下拉列表选项选择中的值
- 使用 javascript 数组创建的下拉列表选项在 IE 中不可见
- 如何在量角器测试中获得具有相同类的不同下拉列表选项
- 输入下拉列表“选项值”;变成javascript函数