javascript - <select>内<option>的value属性不是通过$.each jQuery函数添加的

标签 javascript jquery html

我收到如下 JSON 响应。

{
   "stateTables":[
      {
         "stateId":15,
         "stateName":"kkkkkkkk"
      },
      {
         "stateId":34,
         "stateName":"qwqw"
      },
      {
         "stateId":61,
         "stateName":"xx"
      },
      {
         "stateId":66,
         "stateName":"aaa"
      }
   ]
}

接收此响应的 JavaScript 函数如下。

var timeout;
var request;

function poplateStateListe(id)
{
    if(!request)
    {
        if(id===null||id===""||id===undefined||isNaN(id))
        {
            var options = $("#state");
            options.find('option').remove().end();
            options.append($("<option/>").val("").text("Select"));

            alert("Please select an appropriate option.");
            return;
        }

        request = $.ajax({
            datatype:"json",
            type: "GET",
            contentType: "application/json; charset=utf-8",
            data: {"id": id},
            url: "PopulateStateList.action",
            success: function(response)
            {
                var list = response.stateTables;
                var options = $("#state");

                options.find('option').remove().end();
                options.append($("<option/>").val("").text("Select"));

                $.each(list, function() {
                    options.append($("<option/>").val(this.stateId).text(this.stateName));
                });
            },
            complete: function()
            {
                timeout = request = null;
            },
            error: function(request, status, error)
            {
                if(status!=="timeout"&&status!=="abort")
                {
                    alert(status+" : "+error);
                }
            }
        });
        timeout = setTimeout(function() {
            if(request)
            {
                request.abort();
                alert("The request has been timed out.");
            }
        }, 30000);
    }
}

我将此回复写给 <select>列表。但是,我按如下方式生成此列表。

<select name="entity.stateId" id="state">
    <option>Select</option>
    <option>kkkkkkkk</option>
    <option>qwqw</option>
    <option>xx</option>
    <option>aaa</option>
</select>

value <option> 的属性没有添加。实际的列表应该是。

<select name="entity.stateId" id="state">
    <option value="">Select</option>
    <option value="15">kkkkkkkk</option>
    <option value="34">qwqw</option>
    <option value="61">xx</option>
    <option value="66">aaa</option>
</select>

为什么不是 value通过 $.each 添加的属性功能

$.each(list, function() {
    options.append($("<option/>").val(this.stateId).text(this.stateName));
});

里面success给定 JavaScript 函数的处理程序?我在这里遗漏了一些明显的东西。

最佳答案

尝试使用 .attr() 而不是 .val()

$.each(list, function() {
    options.append($("<option/>").attr('value', this.stateId).text(this.stateName));
});

关于javascript - <select>内<option>的value属性不是通过$.each jQuery函数添加的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21357298/

相关文章:

php - 如何让用户在从 Facebook 页面上的选项卡发布的 Facebook 状态更新中标记他们的 friend ?

javascript - HIghcharts 热图重载数据过多?

javascript - 在 jquery 中访问子 div 时遇到问题

jquery - 如果使用 jquery 的 div 长度大于一个,则删除 div 元素?

javascript - 如何强制 HTML 页面的窗口名称?

javascript - 更改元素高度在第二次按下时不起作用

javascript - 在 jQuery 中转义撇号

javascript - 无法在动态表格上添加水平滚动条

jquery - SVG 到 PDF 在 Rails 5.0 中无法正常工作

javascript - 获取 HTML canvas 上两个不同位置的坐标