首页 > 解决方案 > 如何读取表格中多个下拉列表中的选定选项?

问题描述

单击提交按钮时,我想通过 ajax 调用将所有数据发送到服务器。我正在尝试获取下拉列表的选定文本,它为每次迭代提供第一个下拉列表的文本。

JSFiddle https://jsfiddle.net/L7xy2kjz/10/

这是我尝试的结果

ScoreCard={"Heading":"pawar","parameters":[{"Name":"nikita ","Raiting":"ME","Score":"0"},{"Name":"mayuri","Raiting":"ME","Score":"0"}]},{"Heading":" schoool","parameters":[{"Name":"sss","Raiting":"ME","Score":"0"}]}

在上面的代码中,即使从下拉列表中选择了不同的选项,即。"Raiting":"ME". 但输出显示第一个下拉列表的文本。

function GetObservationReview() {
    var parameters = {}, status;
    var ObservationArray = [];


    $('#ObservationEntry, .tblObservation').each(function () {

        var item = $(this).closest("tr").find('td');            //get each row
        var hasclassparam = $(this).closest("tr").attr('name') === 'ObsevHeading';

        if (status == 'Parameters' && $(this).attr('name') === 'ObsevHeading') {   //if next tr is heading then push whole object in array till first heading

            metrics = {
                'Heading': Heading1,
                'parameters': paramarray     // paramNewArray
                //work in process
            }
            var stringyfydata = JSON.stringify(metrics);
            ObservationArray.push(stringyfydata);

            metrics = {};
            paramarray = [];
        }

        if ($(this).attr('name') === 'ObsevHeading') {    //if the current row having name as     heading

            status == 'heading';

            $.each(item, function (key, value) {
                if (key == 0) {
                    Heading1 = ($(value).text());
                 }

                //else if (key == 1) {
                //    TotalWeightage = ($(value).text());
                //} 
            });
        }

        if ($(this).attr('name') === 'ObsvParameters') {            //read parameters
            status = 'Parameters';
             var e = document.getElementById("dropDownLevelChangetrue");
            var strUser = e.options[e.selectedIndex].text;
            var islastchild = $(this).closest("tr").is(":last-child");   //last child
            MyLevels = {}; i = 1;
            $.each(item, function (key, value) {


                if (key == 0) {
                    parametername = ($(value).text());  
                }
                 if (key == 1) {

                   param_Raiting = (strUser); 
                 }
                if (key == 2) {
                    para_Score =($(value).text()); 
                }

           });

            parameters = {
                "Name": parametername,
                "Raiting": param_Raiting,
                "Score": para_Score


            }
            paramarray.push(parameters);

            if (islastchild === true) {                 // if row is last row add whole object in data

                metrics = {
                    'Heading': Heading1,
                    'parameters': paramarray  //parameter array that stores  Paameter name and its weightage



                }
                var stringyfydata = JSON.stringify(metrics);
                ObservationArray.push(stringyfydata);              //pushing whole object in data1 array

                paramarray = [];
                metrics = {};

            }

        }
    });

    alert("ScoreCard=" + ObservationArray);
    return ObservationArray;
}

预期结果:

ScoreCard={"Heading":"pawar","parameters":[{"Name":"nikita ","Raiting":"EE","Score":"0"},{"Name":"mayuri","Raiting":"ME","Score":"0"}]},{"Heading":" schoool","parameters":[{"Name":"sss","Raiting":"NI","Score":"0"}]}

标签: javascriptjqueryjson

解决方案


我认为您总是从这些行中的相同元素中获取价值

var e = document.getElementById("dropDownLevelChangetrue");
var strUser = e.options[e.selectedIndex].text;

尝试通过名称或其他方式获取它们。getById 总是获取 DOM 节点中的第一个并结束


推荐阅读