Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在动态列表中设置初始值?_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 如何在动态列表中设置初始值?

Javascript 如何在动态列表中设置初始值?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个函数(通过ajax)从后端数据库获取现有记录的详细信息。检索记录后,jsp页面将填充详细信息,包括动态填充列表中项目的值 当我需要将该值设置到下拉列表中作为初始值时,我的问题就出现了。列表始终默认为第一项,即使在我显式设置了值之后也是如此 我尝试将整个列表(不使用任何过滤器)编码到页面中,这允许设置初始值,因此我可以安全地假设问题在于如何填充过滤列表。我似乎找不到有效的解决方案(而且向用户显示整个列表不是一个选项) 函数getRecord(){ $.ajax({ url:“”, 类型:“

我有一个函数(通过ajax)从后端数据库获取现有记录的详细信息。检索记录后,jsp页面将填充详细信息,包括动态填充列表中项目的值

当我需要将该值设置到下拉列表中作为初始值时,我的问题就出现了。列表始终默认为第一项,即使在我显式设置了值之后也是如此

我尝试将整个列表(不使用任何过滤器)编码到页面中,这允许设置初始值,因此我可以安全地假设问题在于如何填充过滤列表。我似乎找不到有效的解决方案(而且向用户显示整个列表不是一个选项)

函数getRecord(){ $.ajax({ url:“”, 类型:“POST”, 数据:jQuery.param(searchObj), 成功:函数(数据、文本状态、jqXHR){ var_data=$.parseJSON(数据); var记录=_数据[“记录”]; $(“#记录ID”).val(记录[“ID”); 美元(“#国家”).val(记录[“国家]); /*填充特定于国家/地区的列表*/ 人口名单(记录[“国家]); /*在列表中设置所选项目*/ $(“#countryItems”).val(记录[“countryItem]”);//不起作用 $(“#countryItems”).prop(“selected”,record[“country]”);//也不起作用 $(“#countryItems选项[值='”+记录[“countryItem”]+“]”)。prop(“已选定”、“已选定”);//仍然不起作用 //在这里做其他事情 } } 功能大众列表(国家){ $.ajax({ url:“”, 类型:“POST”, 数据:{ 国家:国家 }, 成功:函数(数据、文本状态、jqXHR){ var_data=$.parseJSON(数据); var listMap=_data[“listMap”];//已筛选列表 //删除现有列表 $(“#countryItems选项”).remove(); //追加新列表 $.map(列表映射,函数(k,v){ $('#countryItems')。追加(新选项(k,v)); }); } }); }
您可以尝试选择该选项,然后将所选属性设置为真值


$('option item selector').prop('selected',true);

只是为了给这一点添加一些结尾。感谢所有试图帮助的人。不幸的是,所有建议都不起作用(仍然不知道为什么)。我的同事最终提出了一个更复杂的解决方案,确实有效,所以我们不得不接受它

 function getRecord() {

    $.ajax({
      url: "<s:url action='getRecords'/>",
      type: "POST",
      data: jQuery.param(searchObj),
      success: function(data, textStatus, jqXHR) {
        var _data = $.parseJSON(data);
        var record = _data["record"];

        $("#recordID").val(record["ID"]);
        $("#country").val(record["country"]);

        /* populate the country specific list */
        // pass in the selected record as well
        populateList(record["country"], record["countryItem"]);


        // do other stuff here
      }
    }

 function populateList(country, selectedItem) {

      $.ajax({
        url: "<s:url action='populateList'/>",
        type: "POST",
        data: {
          country: country
        },
        success: function(data, textStatus, jqXHR) {
          var _data = $.parseJSON(data);
          var listMap = _data["listMap"]; // filtered list

          // remove existing list
          $('#countryItems option').remove();

          // append new list
          $.map(listMap, function(k, v) {

                if(v == selectedItem) {
                    // add the selected indicator together with the option
                    option='<option value="'+ v +'" selected="selected">'+ k +'</option>'
                }
                else{
                    // just add the option
                    option='<option value="'+v+'">'+k+'</option>'
                }

                $('#countryItems').append(option);
          });
        }
      });
    }
函数getRecord(){ $.ajax({ url:“”, 类型:“POST”, 数据:jQuery.param(searchObj), 成功:函数(数据、文本状态、jqXHR){ var_data=$.parseJSON(数据); var记录=_数据[“记录”]; $(“#记录ID”).val(记录[“ID”); 美元(“#国家”).val(记录[“国家]); /*填充特定于国家/地区的列表*/ //同时传入所选记录 人口列表(记录[“国家”]、记录[“国家项目]); //在这里做其他事情 } } 函数populateList(国家/地区,selectedItem){ $.ajax({ url:“”, 类型:“POST”, 数据:{ 国家:国家 }, 成功:函数(数据、文本状态、jqXHR){ var_data=$.parseJSON(数据); var listMap=_data[“listMap”];//已筛选列表 //删除现有列表 $(“#countryItems选项”).remove(); //追加新列表 $.map(列表映射,函数(k,v){ 如果(v==selectedItem){ //将所选指示器与选项一起添加 选项=“”+k+“” } 否则{ //只需添加选项 选项=“”+k+“” } $(“#countryItems”)。追加(可选); }); } }); }
我会认为这是正确的,因为这是唯一对我有效的解决方案,但我会投票支持@Patrick Vogt的答案,因为它应该对大多数其他人有效,他们没有我遇到的任何模糊问题。

你确定记录[“countryItem”]匹配countryItems选项列表中的任何实际值吗?
$(“#countryItems选项[value=”+记录[“countryItem”]+“]”)。道具(“选定”、“选定”)
注意,
选项
[value..
@Slava.K是的,我在过滤列表和记录[“countryItem”]上都有一个
控制台。日志
”。返回的值是正确的。@xkcd149好的,我试过了,仍然不起作用。也许我遗漏了什么?您必须将prop值设置为布尔值。请参见下面的答案。确切的语法是如何工作的?
$(
?@sml485我没有测试它,但它可能会工作。如果不工作,您可以尝试以下选择器:
$(“#countryItems选项[值=”+记录[“countryItem”]+“]”)。prop(“selected”,true);