我尝试编写一个函数来获取一个自动填充<option>
值的三重下拉菜单。
我从2个JSON响应中获取此值。
填充第二个下拉列表时没有问题,但是当尝试第三个下拉列表时,每个值都会消失。
这是表格(公园 - &gt;钢琴 - &gt; interruttore)
<select name="idPark" id="idPark" class="form-control">
<option value=""><spring:message code="switch.park" /></option>
<c:forEach items="${parks }" var="park">
<option value="${park.idPark }">${park.nomePark }</option>
</c:forEach>
</select>
<select name="idPiano" id="idPiano" class="form-control">
<option value=""><spring:message code="switch.floor" /></option>
<c:forEach items="${piani }" var="piano">
<option value="${piano.idPiano }">${piano.nomePiano }</option>
</c:forEach>
</select>
<select name="idInterruttore" id="idInterruttore" class="form-control">
<option value=""><spring:message code="switch.switch_lamp_name" /> </option>
<c:forEach items="${interruttori }" var="interruttore">
<option value="${interruttore.idInterruttore }">${interruttore.nomeInterruttore }</option>
</c:forEach>
</select>
然后脚本是
<script>
$(document).ready(
function() {
$('#idPark').change(
function(event) {
var parks = $("select#idPark").val();
$.get('api/floor/park/${park.idPark }', {
idPark: parks
}, function(response) {
var select = $('#idPiano');
select.find('option').remove();
$.each(response, function(i, v) {
$('<option>').val(v.idPiano).text(v.nomePiano).appendTo(select);
select.change(function(event) {
var piani = $("select#idPiano").val();
$.get('api/switch/${piano.idPiano}', {
idPiano: piani
}, function(response) {
var select2 = $('#idInterruttore');
select2.find('option').remove();
$.each(response, function(k, z) {
$('option').val(
z.idInterruttore).text(
z.nomeInterruttore)
.appendTo(select2);
});
});
});
});
});
});
});
</script>
基本上我尝试为第二个列表的每个对象填充第三个列表...
答案 0 :(得分:1)
你忘记了&lt;&gt;在附加
时最后一个选择的选项元素 $(document).ready(
function() {
$('#idPark').on('change',function(event) {
var parks = $(this).val();
$.get('api/floor/park/${park.idPark }', {
idPark: parks
}, function(response) {
var select = $('#idPiano');
select.find('option').remove();
$.each(response, function(i, v) {
$('<option>').val(v.idPiano).text(v.nomePiano).appendTo(select);
});
});
});
$('#idPiano').on('change', function(event) {
var piani = $(this).val();
$.get('api/switch/${piano.idPiano}', {
idPiano: piani
}, function(response) {
var select2 = $('#idInterruttore');
select2.find('option').remove();
$.each(response, function(k, z) {
$('<option>').val(z.idInterruttore).text(z.nomeInterruttore).appendTo(select2);
});
});
});
});