0

我有一个动态生成新行的表,我需要从动态生成的选择框中获取值。但我得到的只是'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/

谢谢你的帮助

4

3 回答 3

1

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

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

至:

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

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

于 2013-11-07T11:33:36.920 回答
1

尝试这样的事情,小提琴

改变这个

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

 var option = $(element).find("select option:selected");
于 2013-11-07T11:24:41.150 回答
1

尝试这个,

activityIds[activityIds.length] = $(element).find('select').val();
activityType[activityType.length] =  $(element).find('input').attr("type");
于 2013-11-07T11:25:35.027 回答