1. 程式人生 > 其它 >jquery動態新增元素無法獲取到值

jquery動態新增元素無法獲取到值

技術標籤:前端jqueryjavascriptajax

頁面
F12檢視原始碼是有append成功的
在這裡插入圖片描述

問題描述:通過選擇【賬戶】,動態新增【資金】的元素,
並且通過獲取【賬戶】【資金】的值,進行查詢。
但是獲取的資金元素的值是undefine。

$("select[name='proAccout']", container).change(function () {
        var params = {};
        var proAccout = $(this).val();
        params["proAccout"] = $.trim(proAccout);
        if (params["proAccout"] != "") {
            getAccIDByProAccout(params);
        } else {
            $("div[name='accID']", container).empty().append('<select class="select input" name="accID"></select>');
        }
        var accID = $("select[name='accID']", container).val();
        params["accID"] = accID ? $.trim(accID) : "";     //
        if (params["proAccout"] != "" && params["accID"] != "" ) {
            PRODUCT_CX(params); //查詢相關資訊
        }
    }).change();
var getaccIDByProAccout= function (params) {
        base_ajaxPost("url", *true*, params, "json",
                function (data, status) {
                    if (data && data.success && parseInt(data.code) > 0) {
                        var result = data.object;
                        //拼接資金select下來選單
                        var containerDiv = $("div[name='accID']", container).empty();
                        if (result && result.length > 0) {
                            containerDiv.append('<select class="select input" name="accID"></select>');
                            for (var i = 0; i < result.length; i++) {
                                $("select[name='accID']", containerDiv).append('<option value="' + result[i].accID+ '" selected="selected">' + result[i].accountName + '</option>')
                            }
                        } else {
                            containerDiv.append('<select class="select input" name="accID"></select>' + '<div style="display: none;">' + data + '</div>');
                        }
                    } else {
                        $("div[name='accID']", container).empty().append('<select class="select input" name="accID"></select>' + '<div style="display: none;">' + data + '</div>');
                    }
                }, function (text, msg, e) {
                    Alert(msg, null);
                }
        );
    };

解決方案:由於非同步請求,請求還沒完成,就去獲取val(),導致取到的值是undefine,將非同步改成同步,則可以解決。

 var getAccIDByProAccout= function (params) {
        base_ajaxPost("url",**false**, params, "json",
                function (data, status) {
                ...
                }
  }
  );