【发布时间】:2020-05-02 16:06:39
【问题描述】:
我有两个选择选项独立cats 和依赖subcats。通过显示表格的详细信息行,我想从表格的当前行中获取选定的值。
它选择了cat 选项,但没有选择依赖于cat 的subcat。
我在我的真实代码中使用 ajax 来显示表格行详细信息并获取选择选项数据。
更新
现在它在演示中工作,将option value='" +value.category+ 中的category 替换为@msg 建议的value.subcategory。但是问题仍然存在,并且它仍然无法在我的真实代码中工作,因为我正在使用 ajax 并获取选择选项数据并触发 ajax 成功函数中的更改。
jsfiddle 中的 ajax 示例。
这是演示
var data = [
{"id":1,"category":"Mechanism","subcategory":"Allergic reaction"},
{"id":2,"category":"Mechanism","subcategory":"Bloodborne"},
{"id":3,"category":"Mechanism","subcategory":"Bugbite"},
{"id":4,"category":"Mechanism","subcategory":"Chemical"},
{"id":5,"category":"Mechanism","subcategory":"Electrical"},
{"id":6,"category":"Object","subcategory":"Sara lift"},
{"id":7,"category":"Object","subcategory":"Shower"},
{"id":8,"category":"Object","subcategory":"Table"},
{"id":9,"category":"Object","subcategory":"Wheelchair"}
];
$("#incimechtype").change(function(){
var dropdown = $(this).val();
$("#incimech").find("option").remove();
$.each(data, function(key, value){
if(value.category == dropdown)
$('#incimech').append("<option value='" +value.subcategory+ "' data-subcat='" +value.id+ "'>" +value.subcategory+ "</option>");
});
changeOptions();
});
function changeOptions() {
var selectedOption = $('#incimech').find('option:selected');
$('#ids').val(selectedOption[0].dataset.subcat);
}
$(".show").click(function(){
$(hide).show();
var cat = $(this).closest('tr').find('.cats').text();
var subcat = $(this).closest('tr').find('.subcats').text();
$("#incimechtype").val(cat).trigger('change');
$("#incimech").val(subcat);
});
#hide {
display: none;
padding: 50px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table border="1">
<tr>
<td class="cats">Mechanism</td>
<td class="subcats">Chemical</td>
<td><button class="show"> show detail </button></td>
</tr>
<tr>
<td class="cats">Object</td>
<td class="subcats">Table</td>
<td><button class="show"> show detail </button></td>
</tr>
</table>
<div id="hide">
<label for="incimechtype">Mechanism Type</label>
<select name="incimechtype" id="incimechtype">
<option value="Mechanism">Mechanism</option>
<option value="Object">Object</option>
</select>
<br>
<br>
<label for="incimech">Mechanism</label>
<select id="incimech" onChange="changeOptions()">
</select>
<br>
<br>
<input type="number" id="ids">
</div>
【问题讨论】:
-
你的子类别选项都一样
value:option value='" +value.category+我猜你想要value.subcategory -
@msg 感谢它现在在 jsfiddle 中工作,但实际上在我的真实代码中,我使用
ajax来获取subcategory的值,这就是为什么它仍然无法在我的最后工作。跨度> -
也许您正在尝试在完全加载之前选择元素?抱歉,我不知道发生了什么或看到代码无法提供帮助。
-
@msg 你可以看到我在这个jsfiddle 中使用的ajax 函数。我在成功函数中获得了选定的选项。
-
很难理解你的问题,什么代码来自你的“真实”代码,什么是伪造的?在您的 JSFiddle 中,
mid是什么,它来自哪里?我尝试将 mid 模拟为您的data数组中的 ID 之一,但随后我收到有关changeOptions()中引用的dataset的错误,但该错误不存在。您的代码也显示data-subcat,但它没有在任何地方使用......请尝试创建一个minimal, complete, and verifiable example,如果我们甚至无法理解这个问题,没有人可以提供帮助。
标签: javascript jquery