来自动态生成的选择的值是“未定义的”

Values from dynamicly generated select are 'undefined'

本文关键字:未定义 未定义的 选择 动态      更新时间:2023-09-26

我有一个动态生成新行的表,我需要从动态生成的选择框中获取值。但我得到的只是'undefined'.如果我尝试从动态<input>中获取值,那么一切正常。问题只是选择框。

这是我从用户那里获取值的代码

$("#myTable tr").each(function(index, element){
        if(index === 0){            // skip the table head
            return true;
        }
        var option = $(element).find("#course option:selected");
        if(option.val() == "-1"){        // should skip empty row but doesn't work either
            return true;
        }
        $(element).children().each(function(index, element){
            if(index === 0){
                activities[activities.length] = $(element).find("input").val();
            }else if(index === 1){
                activityIds[activityIds.length] = option.val();
                activityType[activityType.length] = option.attr("type");
            }
        });
    });

JSFiddle http://jsfiddle.net/8rrmr/

感谢您的任何帮助

在addNewActivityRow函数中,您没有为选择框提供 #course id。 实际上,在这种情况下,您不应该使用 id,而应该使用类,因为 id 对于页面必须是唯一的。更改以下行:

var option = $(element).find("#course option:selected");

自:

var option = $(element).find("select option:selected");

它会起作用,但是如果您要拥有它们的多个实例,最好从元素中删除所有 ID

尝试这样的东西,小提琴

更改此内容

 // can't find #course
 var option = $(element).find("#course option:selected");

 var option = $(element).find("select option:selected");

试试这个,

activityIds[activityIds.length] = $(element).find('select').val();
activityType[activityType.length] =  $(element).find('input').attr("type");