好的,我加载一些数据(JSON),然后通过选择菜单我根据所选的值生成一个新的选择菜单:换句话说,选择一个县,生成另一个选择,包含该县的所有城镇和同时应用select2插件,以便可搜索。
我需要能够将所选内容放入隐藏字段中进行提交,这就是我遇到的问题。谢谢,请有人帮助我。 JQuery不是我最强的。
<script>
$(document).ready(function(){
//var county = $('#county').find(":selected").text();
$('select').on('change', function() {
var countySelect = $(this).val();
console.log(countySelect);
$.getJSON('irishtowns.json', function(data) {
var output="<select id='townSelect'>";
output+="<option>Choose a town</option>";
for (var i in data.irishtowns) {
if (data.irishtowns[i].county == countySelect) {
output+="<option value='>" + data.irishtowns[i].town + "'>" + data.irishtowns[i].town + "</option>";
}
}
output+="</select>";
document.getElementById("placeholder").innerHTML=output;
$('#placeholder select').select2();
});
});
});
</script>
答案 0 :(得分:3)
在更改事件中,您可以使用select
访问触发更改事件的this
。要使用jQuery函数并获取值,您应该这样做(您已经为第一次选择做了):
var selected = $(this).val();
由于您每次都创建了一个新选择,因此必须重新创建一个更改处理程序:
$('#placeholder select').on('change', function() {
$('#hidden').val($(this).val());
})
可以使用一些优化:
以下是一些建议:
<script>
$(document).ready(function(){
// Make townSelect a select2 and update the value in hidden when changed
$('#townSelect').select2();
$('#townSelect').on('change', function() {
var selectedTown = $(this).val();
$('#hidden').val(selectedTown);
});
// Change the available towns when county changes
$('#county').on('change', function() {
var countySelect = $(this).val();
$.getJSON('irishtowns.json', function(data) {
// Remove previous options
var select = $('#townSelect').empty();
// Add new options
// & trigger 'change' to make select2 aware of it
select.append($('<option>', { text: 'Choose a town' }).change();
for (var i in data.irishtowns) {
if (data.irishtowns[i].county == countySelect) {
select.append($('<option>', { value: data.irishtowns[i].town, text: data.irishtowns[i].town });
}
}
});
});
});
</script>
<!-- ... -->
<select id="county"><!--...--></select>
<select id="townSelect"><option>Choose a county</option></select>
答案 1 :(得分:0)
您的值属性中出现语法错误。
尝试:
{{1}}