У меня есть две опции выбора: независимая cats
и зависимая subcats
. показывая подробный ряд таблицы, я хочу получить выбранные значения из текущей строки таблицы. Он выбирает параметр cat
, но не выбирает subcat
, который зависит от cat
. Я использую ajax в своем реальном коде, чтобы показать детали строки таблицы и получить данные выбора опций.
ОБНОВЛЕНИЕ
СЕЙЧАС это работает в демо-версии, заменив category
в option value='" +value.category+
по value.subcategory
, предложенному @msg. Но проблема все еще существует, и она все еще не работает в моем реальном коде, так как я использую ajax и получаю данные опций выбора и инициирую изменение в ajax функции успеха. Пример с ajax в этом jsfiddle .
Это демо
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>