如何在动态下载后为下拉列表设置默认值

时间:2017-04-17 22:51:55

标签: javascript jquery ajax

我尝试在动态下载后为下拉列表设置默认值,并按以下方式执行此操作:

   function editUser() {
// массив для взятий информации о пользователе из таблицы
    var userInfo = [];

    // $("table").find("tr").each(function () {
    //
    //     if($(this).is(":visible")){
    //         alert("success");
    //         console.log("SUCCESS")
    //     }
    // })
    var count = 0;
    // здесь надо передать одно значение, то есть один ряд с инфой о пользователе иначе кинуть alert
    $("table").find("tr").each(function () {
        if ($(this).find("input").is(":checked")) {
            count++;
        }
    });
    if (count <= 1) {
        $("table").find("tr").each(function () {
            if ($(this).find("input").is(":checked")) {
                $(this).find("td").each(function () {
                    userInfo.push(this.innerHTML);
                })
                return false;
            }
            count = 0;
        });
    }
    else {
        alert("Выбрано больше одного значения");
        if ($("#tableForUser").length != 0) {
            getUsers();
            count = 0;
            return;
        }
        if ($("#tableForOwners").length != 0) {
            getOwners();
            count = 0;
            return;
        }
        if ($("#tableForDrivers").length != 0) {
            getDrivers();
            count = 0;
            return;
        }
    }
    console.log(userInfo);
    // alert("SUCCESS");

    console.log(listCities);

    $("#head").children().remove();
    var trHTML = '';
    trHTML += '<form id="changeForm" class="form-horizontal" role="form">' +
        '<input id="inputID" class="form-control" type="text" style="visibility:hidden">' +
        '<div class="form-group">' +
        '<label class="col-lg-3 control-label">Ник:</label>' +
        '<div class="col-lg-8">' +
        '<input id="inputNick" class="form-control" type="text">' +
        '</div>' +
        '</div>' +
        '<div class="form-group">' +
        '<label class="col-lg-3 control-label">Имя:</label>' +
        '<div class="col-lg-8">' +
        '<input id="inputFirstname" class="form-control" type="text">' +
        '</div>' +
        '</div>' +
        '<div class="form-group">' +
        '<label class="col-lg-3 control-label">Фамилия:</label>' +
        '<div class="col-lg-8">' +
        '<input id="inputLastname" class="form-control" type="text" >' +
        '</div>' +
        '</div>' +
        '<div class="form-group">' +
        '<label class="col-lg-3 control-label">Мобильный телефон:</label>' +
        '<div class="col-lg-8">' +
        '<input id="inputMobile"class="form-control" type="text">' +
        '</div>' +
        '</div>' +
        '<div class="form-group">' +
        '<label class="col-lg-3 control-label">Электронная почта:</label>' +
        '<div class="col-lg-8">' +
        '<input id="inputEmail" class="form-control" type="text">' +
        '</div>' +
        '</div>' +
        '<div class="form-group">' +
        '<label class="col-lg-3 control-label">Город:</label>' +
        '<div class="col-lg-8">' +
        '<div class="ui-select">' +
        '<select id="cities" class="form-control">' +
        '</select>' +
        '</div>' +
        '</div>' +
        '</div>' +
        '<div class="form-group">' +
        '<label class="col-md-3 control-label">Пароль:</label>' +
        '<div class="col-md-8">' +
        '<input id="inputPassword1" class="form-control" type="password">' +
        '</div>' +
        '</div>' +
        '<div class="form-group">' +
        '<label class="col-md-3 control-label">Подтвердите пароль:</label>' +
        '<div class="col-md-8">' +
        '<input id="inputPassword2" class="form-control" type="password">' +
        '</div>' +
        '</div>' +
        '<div class="form-group">' +
        '<label class="col-md-3 control-label"></label>' +
        '<div class="col-md-8">' +
        // '<input type="button" class="btn btn-primary" onclick="saveChanges();" value="Save Changes">'
        '<button type="button" class="btn btn-primary" onclick="saveChanges();">Сохранить</button><br>' +
        '<span></span>' +
        '<button type="button" class="btn btn-default" onclick="">Отменить</button><br>' +
        '</div>' +
        '</div>' +
        '</form>';
    $("#head").append(trHTML);
    if (userInfo[1] == null) {
        alert("Выберите пользователя для редактирования");
        $("#head").children().remove();
    }
    else {
        //Записываем индекс
        // massChanges.push(userInfo[0]);
        // console.log(massChanges);

        $(getCities().done(function () {
            document.getElementById("inputID").value = userInfo[0];
            document.getElementById("inputNick").value = userInfo[1];
            document.getElementById("inputFirstname").value = userInfo[2];
            document.getElementById("inputLastname").value = userInfo[3];
            document.getElementById("inputMobile").value = userInfo[4];
            document.getElementById("inputEmail").value = userInfo[5];
            $("#cities").val(userInfo[6]);
            // $('cities option:contains(userInfo[6])').prop('selected',true);
            document.getElementById("inputPassword1").value = userInfo[7];
            document.getElementById("inputPassword2").value = userInfo[7];

            userInfo = [];
        }))
    }
}

其中函数getCities()声明为:

    var listCities = [];
var city;
function getCities() {

    $.ajax({
        type: "GET",
        url: "/admin/getCities",
        datatype: "json",
        success: function (response) {
            $.each(response, function (i, item) {
                listCities.push(item);
            });
            $.each(listCities, function (i, item) {

                city += '<option>' + item + '</option>';
            })
            $("#cities").append(city);
        },
        error: function () {
            alert("error")
        }
    })
}

但每次我都会收到以下错误: 无法阅读已完成的财产&#39;在editUser中未定义。有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

  

但每次我都会听到以下错误:无法读取属性&#39;已完成&#39;的   在editUser上未定义。有什么想法我可以解决这个问题   问题

您正在将getCities()的函数调用传递给jQuery(),它没有.done()方法。删除围绕jQuery()电话

getCities()封包器
getCities().done(function(){/* do stuff */})

此外,return $.ajax()来自getCities函数

function getCities() {
  return $.ajax(/* settings */)
}