当我在 asp.net 核心中选择下拉值时,如何将特定文本设置为下拉列表?

Posted

技术标签:

【中文标题】当我在 asp.net 核心中选择下拉值时,如何将特定文本设置为下拉列表?【英文标题】:how to set specific text to dropdown when i select a dropdown value in asp.net core? 【发布时间】:2020-07-19 05:25:00 【问题描述】:

我在 asp.net 核心中有一个带有国家名称和代码的下拉菜单。我需要,当我选择一个下拉值时,它应该在下拉列表中设置一个唯一的代码。我有一个截图,你可以看到,

screen Shot

现在我有第二个屏幕截图,我想在选择值后喜欢这个下拉菜单。 second Screen Shot

我的视图下拉代码是

    <select class="form-control" id="countryDropdown" >
    @foreach (var country in Model)
    
        <option value="@country.id"
                data-code="@country.codeName">
            @country.Name
        </option>
    
</select>

html 下拉菜单是

<select class="form-control" id="countryDropdown">
        <option value="3" data-code="93">
            Afghanistan (93)
        </option>
        <option value="264" data-code="">
            Åland Islands ()
        </option>
        <option value="4" data-code="355">
            Albania (355)
        </option>
        <option value="5" data-code="213">
            Algeria (213)
        </option>
        <option value="6" data-code="1">
            American Samoa (1)
        </option>
        <option value="7" data-code="376">
            Andorra (376)
        </option>
        <option value="8" data-code="244">
            Angola (244)
        </option>
        <option value="9" data-code="1">
            Anguilla (1)
        </option>
        <option value="266" data-code="">
            Anonymous Proxy ()
        </option>
        <option value="10" data-code="672">
            Antarctica (672)
        </option>
        <option value="11" data-code="1">
            Antigua and Barbuda (1)
        </option>
        <option value="12" data-code="54">
            Argentina (54)
        </option>
        <option value="13" data-code="374">
            Armenia (374)
        </option>
        <option value="14" data-code="297">
            Aruba (297)
        </option>
        <option value="268" data-code="">
            Asia/Pacific Region ()
        </option>
</select>

【问题讨论】:

编辑您的问题并输入您的查看代码。 我更新了一个代码,现在你可以看到了 我正在从数据库中获取数据。您可以尝试使用静态数据 现在我更新一个问题,希望对你有帮助 我现在只有一个下拉字段,我再次使用 html 更新代码 【参考方案1】:

在这个解决方案中,我们将 Country 文本包装在 span 标签内。每当我们单击下拉菜单时,都会使用 Country 属性填充 span 标签。选择完一个选项后,这将清空 span 标签。

将此添加到您的脚本中;

$(document).ready(function() 
  $("#countryDropdown").find("option").each(function() 
    var codeIndex = $(this).text().indexOf("(");
    var country = $(this).text().substring(0, codeIndex);
    var code = $(this).text().substring(codeIndex);
    $(this).html("<span class='select-hide' data-country='" + country + "'></span>" + code);
  );

  $("#countryDropdown").focus(function() 
    $(this).find(".select-hide").each(function() 
      $(this).text($(this).data("country"));
    );
  );

  $("#countryDropdown").change(function() 
    $(this).blur();
  );

  $("#countryDropdown").blur(function() 
    $(this).find(".select-hide").each(function() 
      $(this).text("");
    );
  );
);

下面的演示;

$(document).ready(function() 
  $("#countryDropdown").find("option").each(function() 
    var codeIndex = $(this).text().indexOf("(");
    var country = $(this).text().substring(0, codeIndex);
    var code = $(this).text().substring(codeIndex);
    $(this).html("<span class='select-hide' data-country='" + country + "'></span>" + code);
  );

  $("#countryDropdown").focus(function() 
    $(this).find(".select-hide").each(function() 
      $(this).text($(this).data("country"));
    );
  );

  $("#countryDropdown").change(function() 
    $(this).blur();
  );

  $("#countryDropdown").blur(function() 
    $(this).find(".select-hide").each(function() 
      $(this).text("");
    );
  );
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<select class="form-control" id="countryDropdown">
  <option value="3" data-code="93">
    Afghanistan (93)
  </option>
  <option value="264" data-code="">
    Åland Islands ()
  </option>
  <option value="4" data-code="355">
    Albania (355)
  </option>
  <option value="5" data-code="213">
    Algeria (213)
  </option>
  <option value="6" data-code="1">
    American Samoa (1)
  </option>
  <option value="7" data-code="376">
    Andorra (376)
  </option>
  <option value="8" data-code="244">
    Angola (244)
  </option>
  <option value="9" data-code="1">
    Anguilla (1)
  </option>
  <option value="266" data-code="">
    Anonymous Proxy ()
  </option>
  <option value="10" data-code="672">
    Antarctica (672)
  </option>
  <option value="11" data-code="1">
    Antigua and Barbuda (1)
  </option>
  <option value="12" data-code="54">
    Argentina (54)
  </option>
  <option value="13" data-code="374">
    Armenia (374)
  </option>
  <option value="14" data-code="297">
    Aruba (297)
  </option>
  <option value="268" data-code="">
    Asia/Pacific Region ()
  </option>
</select>

【讨论】:

吉山的回答也不错,只是改变了选择的选项。【参考方案2】:

你能试试这个吗?

这个非常简单易懂而且速度更快。

请查看此链接JsFiddle

注意:请取消注释 console.log 以获得更多详细信息。

并且您可以在这里根据您的要求修改此代码,我在下拉选项中播种当前数据代码显示。

$(document).ready(function() 
 	$("#countryDropdown option:first").text($("#countryDropdown option:first").data("code"));
  $("#countryDropdown").change(function(event) 
  
     var oCurrentOption =this.options[event.target.selectedIndex];
     $("#countryDropdown option[value="+oCurrentOption.value+"]").text($(oCurrentOption).data("code"));
     //console.log(oCurrentOption);
     //console.log("Data Code "+$(oCurrentOption).data("code"));
     //console.log("Current Text "+oCurrentOption.text);
     //console.log("Current Value "+oCurrentOption.value);
  );
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="form-control" id="countryDropdown">
        <option value="3" data-code="93">
            Afghanistan (93)
        </option>
        <option value="264" data-code="">
            Åland Islands ()
        </option>
        <option value="4" data-code="355">
            Albania (355)
        </option>
        <option value="5" data-code="213">
            Algeria (213)
        </option>
        <option value="6" data-code="1">
            American Samoa (1)
        </option>
        <option value="7" data-code="376">
            Andorra (376)
        </option>
        <option value="8" data-code="244">
            Angola (244)
        </option>
        <option value="9" data-code="1">
            Anguilla (1)
        </option>
        <option value="266" data-code="">
            Anonymous Proxy ()
        </option>
        <option value="10" data-code="672">
            Antarctica (672)
        </option>
        <option value="11" data-code="1">
            Antigua and Barbuda (1)
        </option>
        <option value="12" data-code="54">
            Argentina (54)
        </option>
        <option value="13" data-code="374">
            Armenia (374)
        </option>
        <option value="14" data-code="297">
            Aruba (297)
        </option>
        <option value="268" data-code="">
            Asia/Pacific Region ()
        </option>
</select>

【讨论】:

以上是关于当我在 asp.net 核心中选择下拉值时,如何将特定文本设置为下拉列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何将简单值从 axios.post 发送到 asp.net 核心?

选择下拉框中的值时启用文本框[关闭]

如何使用 ASP.NET Core Razor 页面预选下拉列表中的项目

Jquery禁用Asp.net核心中的选定选项无法正常工作

如何从前端将 ASP.net 下拉列表索引设置为 0

在 asp.net 中的另一个下拉选择中更改了下拉值