JQuery 设置选择的选项

Posted

技术标签:

【中文标题】JQuery 设置选择的选项【英文标题】:JQuery Set selected option 【发布时间】:2018-12-29 16:27:30 【问题描述】:

我有两个选择框,默认值为 - 我想为两者选择其他内容,我的第一个问题是两个字段都有动态 id,如 prod-685209-Size,所以我无法使用 id 访问。

我有以下 html

<select class="sku-attr" name="Size">
<option value="_def">-</option>
    <option value="S">S</option>
    <option value="M">M</option>
    <option value="L">L</option>
    <option value="XL">XL</option>
</select>

<select class="sku-attr" name="Color">
    <option value="_def">-</option>
    <option value="Black">Black</option>
    <option value="Blue">Blue</option>
</select>

所以我执行了以下操作: document.getElementsByTagName('select')[0].selectedIndex = 2 document.getElementsByTagName('select')[1].selectedIndex = 2 它在前端工作,显示了我的新选项,但它没有提示后端,因为它实际上并没有选择选项。当我手动单击这些选项时,后端工作正常,基本上我需要另一种解决方案来选择这些选项。

【问题讨论】:

如果没有正确提交,则在运行该代码时会出现问题。提供minimal reproducible example 但它没有提示后端 -- 是的,因为脚本是在前端执行的。你能发布什么代码通知后端值的变化? 【参考方案1】:

如果我没有误解您的要求,那么您需要这样的东西。只需将两个不同的 ids 添加到您的 select 元素并附加一个 change 事件侦听器。例如 sizecolor

var s = document.getElementById("size");
var c = document.getElementById("color");

function getSize() 
  sizeSelected = s.value;
  console.log('size=' + sizeSelected);


function getColor() 
  colorSelected = c.value;
  console.log('color=' + colorSelected);


s.addEventListener('change', getSize);
c.addEventListener('change', getColor);
<select id="size" class="sku-attr" name="Size">
  <option value="_def">-</option>
  <option value="S">S</option>
  <option value="M">M</option>
  <option value="L">L</option>
  <option value="XL">XL</option>
</select>

<select id="color" class="sku-attr" name="Color">
  <option value="_def">-</option>
  <option value="Black">Black</option>
  <option value="Blue">Blue</option>
</select>

【讨论】:

【参考方案2】:

您需要在 dom 命令之后添加 .validate() 才能真正提示页面。

【讨论】:

以上是关于JQuery 设置选择的选项的主要内容,如果未能解决你的问题,请参考以下文章

jQuery将选择框设置为空选项

如何使用 jquery 设置选择下拉列表的“选定选项”

jQuery UI 多个日期选择器:在按类设置选项后按 id 设置单个事件

jquery对话框窗口 - 将选项设置为变量一次

jQuery如何设置/取消设置下拉菜单的背景颜色

按值设置选择选项“已选择”