【问题标题】:set selected value for dropdown in table using Jquery使用 Jquery 在表中设置下拉列表的选定值
【发布时间】:2020-06-28 02:13:47
【问题描述】:

我正在使用 jquery wit dropdownlist 添加一个表格行,如下所示 -

$.each(data, function (i, item) {
$('#tableRM > tbody:last-child').append('<tr sn=' + item.SN + '>
<td>
<select name="RMLotName" class="form-control lotColumns">
<option value="">Select</option>
<option value="Lot1">Lot1</option>
<option value="Lot2">Lot2</option>
<option value="Lot3">Lot3</option>
</select>
</td>
    <td><input name="RMLotQty" type="text" disabled class="form-control lotColumns" value="' + item.LotQty + '" /></td>

</tr>)
    
    }

现在我想用Name = #RMLotName 为下拉列表选择默认值 我试过了:-

$('#RMLotName').val("'" + item.LotName+"'");

$("#RMLotName option[value='" + item.LotName+"']").attr('selected', 'selected');

但它不起作用。我搜索了一段时间,发现了一些链接,如 This This 和其他链接,但没有一个有效。

【问题讨论】:

  • #RMLotName 是一个 id 选择器
  • 是的,这是选择的名称。
  • nameid 不同,它们的选择器也不同。您在选择中没有id,并且由于它正在重复,因此也不需要它,因为id 在页面中必须是唯一的。
  • 是的,但我在页面中将其用于其他目的。
  • 不知道这意味着什么,但$('#RMLotName') 不能用于显示的&lt;select&gt;,因为它没有id。我下面的回答对你有帮助吗?

标签: javascript jquery .net


【解决方案1】:

考虑在追加该对象之前从行 html 中创建一个 jQuery 对象。

它允许您在该特定行上使用 jQuery 方法。那么你需要一个更好的&lt;select&gt;选择器

$.each(data, function (i, item) {

      let rowHtml = `<tr sn="${item.SN}"><td>
                <select name="RMLotName" class="form-control lotColumns">
                <option value="">Select</option>
                <option value="Lot1">Lot1</option>
                <option value="Lot2">Lot2</option>
                <option value="Lot3">Lot3</option>
                </select>
                </td>
                <td><input name="RMLotQty" type="text" disabled class="form-control lotColumns" value="${item.LotQty}" /></td>
            </tr>`;
      // create object from html string
      let $row = $(rowHtml)
      // set value of the select within this row instance
      $row.find('select.lotColumns').val(item.LotName);
      // append updated object to DOM
      $('#tableRM > tbody:last-child').append($row);

 });

【讨论】:

  • 好的。选择值被选中。但是其他值会像 ${item.SN} 一样出现。我做了 $row.find('#RMSN').val(item.SN);
  • 所以您建议我删除 Name 属性并改用 class 吗?
  • 你不能在一个页面中重复 id....把它们想象成一个地址。您不能将邮件发送到在多个建筑物上使用的地址。此外,所有显示的元素都没有id="RMSN",这与name="RMSN"非常不同
  • 删除了 Name 属性并替换为 class。也有同样的问题。
  • 显示我使用的代码。 jsfiddle 或其他沙盒站点中的演示会很有帮助。不知道为什么按照我的示例使用类不起作用
猜你喜欢
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 2010-11-21
相关资源
最近更新 更多