Jquery 动态填充表单中动态创建的元素的下拉列表 函数flavorDefn(e){ var locationid=$(e).attr('id'); var idArray=位置ID.split('-'); 变量id=idArray[1]; var-flavorDef=“flavorDefs”+id; $(“#”+flavorDef).prop(“disabled”,true); $.getJSON('flavorDefinitions.wss'{ 位置:$(this).val(), 阿贾克斯:“真的” },函数(数据){ $(“#”+flavorDef).prop(“禁用”,false); var html=''; var len=data.length; 对于(变量i=0;i
表单中有两个下拉列表,在页面加载后动态创建。我已经编写了一个jquery函数,当第一个下拉列表值更改时将调用该函数。但当我尝试访问动态创建的表单字段值时,它会显示TypeError:e.nodeName未定义Jquery 动态填充表单中动态创建的元素的下拉列表 函数flavorDefn(e){ var locationid=$(e).attr('id'); var idArray=位置ID.split('-'); 变量id=idArray[1]; var-flavorDef=“flavorDefs”+id; $(“#”+flavorDef).prop(“disabled”,true); $.getJSON('flavorDefinitions.wss'{ 位置:$(this).val(), 阿贾克斯:“真的” },函数(数据){ $(“#”+flavorDef).prop(“禁用”,false); var html=''; var len=data.length; 对于(变量i=0;i,jquery,jsp,Jquery,Jsp,表单中有两个下拉列表,在页面加载后动态创建。我已经编写了一个jquery函数,当第一个下拉列表值更改时将调用该函数。但当我尝试访问动态创建的表单字段值时,它会显示TypeError:e.nodeName未定义 function flavorDefn(e) { var locationid = $(e).attr('id'); var idArray = locationid.split('-'); var id = idA
function flavorDefn(e) {
var locationid = $(e).attr('id');
var idArray = locationid.split('-');
var id = idArray[1];
var flavorDef="flavorDefs"+id;
$("#"+flavorDef).prop("disabled", true);
$.getJSON('flavorDefinitions.wss', {
location : $(this).val(),
ajax : 'true'
}, function(data) {
$("#"+flavorDef).prop("disabled", false);
var html = '';
var len = data.length;
for ( var i = 0; i < len; i++) {
html += '<option value="' + data[i].id+ '" id="'+data[i].id+'">'
+ data[i].cpus+' CPU '+data[i].ram+' MB RAM '+data[i].disk+' GB DISK '+ '</option>';
}
html += '</option>';
$("#"+flavorDef).html(html);
});
}
<select name="locationName" id="location-<%=patternBO.getId()%>" onchange="flavorDefn(this)">
<select name="flavorDefs" id="flavorDefs<%=patternBO.getId()%>">
如果在最初呈现DOM后填充select,则可以使用事件委派来捕获事件:
$(document).ready(){
$('select[name="locationName"]').change(function(){
var theValue = this.value;
$('select[name="flavorDefs"]').val(theValue);
});
});
$(文档).ready(){
$(文档)。在('change',选择[name=“locationName”]”,函数()上{
var theValue=此.value;
$('select[name=“flavorDefs”]).val(值);
});
});
参考:
您是否试图找出控件不传播的line-flavorDefn函数。作为一名不太熟悉前端开发的JAVA开发人员,我建议在console.log中打印所有值,或者为了快速调试,在每一行之后都放一个警报(虽然这不是一种很好的调试方式)。您好,您好,您是否注意到我正在寻找在加载表单时创建的元素上调用函数。请查看代码id=“location-”此id值将在加载表单后填充。请参阅修订的答案。我建议不要内联js代码——糟糕的设计,以后很难排除故障。非常感谢@gibberish。这个建议奏效了。如果不是通过js代码,那么如何实现呢?
Inline
code(bad)是将javascript嵌入HTML标记的地方,例如:
,而外部代码(good)包含在中,您的代码放在这里,你可能会发现Alex Garrett的(免费)视频课程很有帮助:-和-
<script>
$(document).ready(){
$(document).on('change', 'select[name="locationName"]', function(){
var theValue = this.value;
$('select[name="flavorDefs"]').val(theValue);
});
});
</script>