Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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 动态填充表单中动态创建的元素的下拉列表 函数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

表单中有两个下拉列表,在页面加载后动态创建。我已经编写了一个jquery函数,当第一个下拉列表值更改时将调用该函数。但当我尝试访问动态创建的表单字段值时,它会显示TypeError:e.nodeName未定义

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>