如何使用 jQuery 从文本框中的列表中显示选定的选项?

Posted

技术标签:

【中文标题】如何使用 jQuery 从文本框中的列表中显示选定的选项?【英文标题】:How can I show selected option from list in textbox using jQuery? 【发布时间】:2021-01-30 19:03:46 【问题描述】:

我有以下表格:

在我的简单 mvc 模型中(下面是我的视图,此代码填充值):

    @foreach (var item in Model)
    
        <tr>
            <td>
                @html.DisplayFor(modelItem => item.ID)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.CustomerName)
            </td>
                <select id="decisionList" name="@item.ID">
                    <option selected value="b"></option>
                    <option value="n">None</option>
                    <option value="c">Cancellation</option>
                    <option value="d">Date of payment</option>
                </select>
            </td>
            <td>
                <input id="choice" name="@item.ID" type="text">
            </td>
            <td>
        </tr>
    

我想要做的是在 corresponding 文本框中显示所选列表中的文本(因此我在“选择”列的第三行中选择了一些选项,并在“决定”列的第三个文本框中查看此文本')。我尝试了不同的方法,我在 @item.ID 中添加了 attr 'name' 以通过模型中的 ID 定义每个行字段(注意:'name' 在数字后有空格)

我写了一些js。 - 目标是在更改选择时输入选定的文本。:

$('select#decisionList').change(function () 

    var textSelected = $(this).find(':selected').text();
    var nameSelected = $(this).attr('name');

    $('#choice').attr("[name*='"+ nameSelected +"']").val(textSelected);
   
);

它根本不起作用。我不知道该怎么做。 'Foreach' 为每个'name' 正确分配 ID,如上图所示。你知道如何在相应的(在这种情况下是旁边的字段)字段中显示选定的文本吗?也许我这里显示的方法没用

【问题讨论】:

为什么要让两个字段具有相同的name="" 在服务器端如何区分它们? 另外,拥有 "Decision" 字段毫无意义。 &lt;select&gt;已经决定了。 因为我不知道如何在文本框中显示选定的选项,并认为也许我会尝试使用相同的“名称”:选择列表和文本框。如果您有其他想法我应该如何解决请给我一个提示 @RokoC.Buljan 我知道你的意思,但出于某种目的我需要这个专栏 另外,您的 HTML 标记无效,您已打开 &lt;td&gt; 【参考方案1】: 获取选中的选项索引 HTMLSelectElement/selectedIndex 使用SelectElement.options[index] 定位OPTION 元素 使用jQuery的.closest()方法引用公共TR父 使用 jQuery 的 .find() 方法查找元素

$('.decisionList').on("change", function() 
  const i = this.selectedIndex;
  $(this).closest("tr").find(".choice").val(this.options[i].textContent);
);
<table>
  <tr>
    <td>111</td>
    <td>Anna</td>
    <td>
      <select class="decisionList">
        <option selected value="b"></option>
        <option value="n">None</option>
        <option value="c">Cancellation</option>
        <option value="d">Date of payment</option>
      </select>
    </td>
    <td><input class="choice" name="111" type="text"></td>
  </tr>
  <tr>
    <td>222</td>
    <td>John</td>
    <td>
      <select class="decisionList">
        <option selected value="b"></option>
        <option value="n">None</option>
        <option value="c">Cancellation</option>
        <option value="d">Date of payment</option>
      </select>
    </td>
    <td><input class="choice" name="222" type="text"></td>
  </tr>
</table>



<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

或者在一个更jQuery的fashion中也这样:

$('.decisionList').on("change", function() 
  const $option = $(this).find(":selected");
  $(this).closest("tr").find(".choice").val($option.text());
);

【讨论】:

以上是关于如何使用 jQuery 从文本框中的列表中显示选定的选项?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据列表框中的选定行填充多个文本框

如何使用jquery在标签中显示多选下拉列表的选定文本?

jQuery:如何突出显示输入框中的文本?

如何使用jquery从dot net core mvc中的表中的下拉列表中显示选定的值

如何在运行时更改列表框中的选定项目文本?

从c#.net中列表框中的多个选定项构建查询