【发布时间】:2017-10-13 20:49:48
【问题描述】:
我的问题是,使用 javascript / jquery,“如何在不是所选索引的特定索引处更改下拉选项的值?”
我有一个值的下拉列表。用户可以选择一个选项。我有一种方法可以让用户更改所选选项的值。值改变了,一切都很好。
这是我的问题:如果用户决定取消或更改列表中的其他值而不将更改保存到数据库,我想撤消值变化。
- 我有已更改选项的索引。
- 我有更改选项的旧值。
- 我有更改选项的新值。
如果用户选择了不同的选项,我不想更改新选择的选项的索引。我只想重置用户更改的选项的值。
我尝试了一种 .each 方法:
var changedTitle = $('#ddTitle').text();
$("#ddTitle option").each(function() {
if($(this).text() == changedTitle) {
$(this).text(savedTitle);
}
});
我喜欢循环遍历每一个的想法,但我从来没有看到第二次执行循环并且浏览器永远不会回来。
我尝试了一种 .filter 方法:
var changedTitle = $('#ddTitle').text();
$("#ddTitle option").filter(function(index) { return $(this).text() === changedTitle; }).attr('selected', 'selected');
$("#ddTitle option").filter(function() {
return $(this).text() === changedTitle;
}).prop('selected', true); // changes the selected option
我得到了上面的过滤器代码,但它设置了选定的选项。
$("#ddTitle option").filter(function() {
return $(this).text() === changedTitle;
}).prop('text', savedTitle); // execution never returns
我尝试在选项上使用 text 属性,但 jquery 变得非常繁忙,执行永远不会返回。
我尝试通过文本值查找,这很愚蠢,因为我知道索引:
$("#ddTitle option[value='" + theText + "']").attr('selected', 'selected');
如果这些得到一个选项,则它是第一个选项 (0) 或浏览器挂起。
有没有办法在 javascript 或使用 jquery 中以编程方式更改指定索引处的文本值?我试过的都没有用。
【问题讨论】:
标签: javascript jquery html-select dropdown