禁用先前选择的下拉选项,检查文本和 id 值

Posted

技术标签:

【中文标题】禁用先前选择的下拉选项,检查文本和 id 值【英文标题】:disable previously selected dropdown option, check both text & id value 【发布时间】:2017-08-29 02:13:05 【问题描述】:

在一个表中,如何循环遍历一个表列中的所有dropdowns text & id,并将它们保存在数组中。这样我就可以禁用以前选择的选项

一旦选择了一个选项,我不希望它再次可用如何检查表格中先前选定选项的选定文本在页面中的所有其他下拉菜单中将该选项设置为禁用。

(此问题与其他 SO 问题不同,因为它在检查表内的 selected textselected value 后禁用,并且需要定位指定列中的下拉列表)

var allSelectedValuesArray = array();
allSelectedValuesArray.push($("#tblVersions .Model option:selected").text());

var rows = $("body tr",$("#tblVersions")).map(function()  
return [$("td:eq(0) input:checkbox:checked",this).map(function()  
  return this.innerhtml;     
).get()];
).get();

<table id="tblversions">
 <tbody id="body">
  <tr class="rowcss">
   <td>
    <select class="Manufacturer">
      <option value="1">Toyota </option>
      <option value="2">Honda</option>
      <option value="3">BMW</option>
    </select>
   </td>
   <td>
   <select class="Model"> 
   <!-- If user selects Honda my Ajax populates Honda Models/Cars like below-->
      <option value="1">Accord</option>
      <option value="2">Toyota 2</option>
      <option value="3">Honda 3</option>        
    </select>
   </td>
   </tr>
    <tr class="rowcss">
    <td>
    <select class="Manufacturer">
      <option value="1">Toyota </option>
      <option value="2">Honda</option>
      <option value="3">BMW</option>
    </select>
    </td>
    <td>
    <select class="Model">
    <!-- If user selects BMW my Ajax populates BMW models Cars like below-->
      <option value="1">X5 Suv</option>
      <option value="2">318 series Cheap</option>
      <option value="3">540i too expensive!</option>        
    </select>
   </td>
  </tr>     
 </tbody>
 </table>

【问题讨论】:

您的 JS 似乎与您的 HTML 无关(不同的类和 id,并且 HTML 没有输入元素)。您能否请edit您的问题举个例子“当用户从下拉列表y中选择x时,应该发生以下情况......”? 问题不是很清楚 @nnnnnn 我编辑了问题 - 我想禁用任何其他选定的选项,我该怎么做? 我想比较 textvalue 是否相同。这是一个级联下拉菜单 - 因此,在 某些情况下,如果他们选择另一个制造商,可能会有重叠的型号 ID (但不同的制造商 ID),例如Honda could have value 3 = Accord,而在差异下制造 Toyota Value 3 = Camry,所以我需要确保我检查了文本和值——然后禁用选项 @JYoThI 请看我将问题编辑得更清楚,我想检查文本和 ID,以便disable 任何以前选择的选项 【参考方案1】:

我不明白你问题的第二部分,但如果你想获取所有下拉列表的文本和值,你可以这样做。

// Called when any of the dropdowns change
( "#tblversions" ).change(function() 
    var allSelectedValuesArray = [];

    // Search for all selects in the #tblversions
    $("#tblversions select option:selected").each(function() 
        // for each one, push it into the array
        allSelectedValuesArray.push(text:$(this).text(), value:this.value);
    );
);

这将为表格中的每个下拉菜单创建一个格式为 text:"sometext",value:"somevalue" 的对象数组。

【讨论】:

嗨,感谢您编辑了我的问题。,我想禁用任何其他选定的选项,我该怎么做? 我想比较文本和值是否相同 在某些情况下,如果他们选择其他制造商,可能会有重叠的 ID,例如本田的价值 3 = 雅阁,但丰田价值 3 = 凯美瑞,所以我需要确保同时检查文本和价值

以上是关于禁用先前选择的下拉选项,检查文本和 id 值的主要内容,如果未能解决你的问题,请参考以下文章

根据 python plotly dash 中先前单选项目/下拉列表中的选择禁用下拉列表

从文本字段复制值以选择下拉列表[重复]

Ext.form.ComboBox用JSON数据源下拉框不显示选项,点击一个选择项在文本框可以显示值,求指导

selenium-获取下拉选择框value默认的文本,而不是下拉框所有的文本值

从文本框的下拉列表中选择选项

angularJS 可编辑下拉选项框