JS-比较选择选项,然后将其选中



我们有几个<select>字段需要设置在指定的<option>。我们有这个";回答列表";带有UUID。每个CCD_ 3被评估:如果UUID被包括在";回答列表";则这是所选择的<option>,否则我们保持默认";不可用";已选择<option>

请参阅下面我当前的代码,比较是我面临麻烦的部分。

JS代码:

$('#severalStores .selectLimitInformation').each(function () { //Scan all the select fields        
$(this).find("option").each(function () { //Search within every option            
$.each(JSON.parse(answerList), function (item) { //Scan all "answer list"
//Compare values then choose value (not working)
if ($(this).option.value == item.expectedUUID)
$(this).val(item.expectedUUID);
else
$(this).val('0');
$(this).trigger('change');
});
});
});

HTML代码:

<div class="row form-horizontal" id="severalStores">
<div class="col-md-6">
<div class="row form-horizontal">
<div class="col-md-4">
<label>Store AAA:</label>
</div>
<div class="col-md-8">
<select class="form-control selectLimitInformation">
@foreach (...) //data from ViewBag
{
<option value="@storeLimit.info">@storeLimit.description</option>
}
<option value="0">Not available</option>
</select>
</div>
</div>
<div class="row form-horizontal">
<div class="col-md-4">
<label>Store BBB:</label>
</div>
<div class="col-md-8">
<select class="form-control selectLimitInformation">
@foreach (...) //data from ViewBag
{
<option value="@storeLimit.info">@storeLimit.description</option>
}
<option value="0">Not available</option>
</select>
</div>
</div>
//Several other select
</div>
</div>

您不需要嵌套的循环。将所有预期的UUID放入Set中。然后,您可以使用.has()方法来测试选项值是否在集合中,并更新select值。

answerList = JSON.parse(answerList);
let expectedUUIDs = new Set(answerList.map(a => a.expectedUUID));
$('#severalStores .selectLimitInformation').each(function(i, select) { //Scan all the select fields    
select.value = "0"; // start with a default    
$(this).find("option").each(function(j, option) { //Search within every option      
if (expectedUUIDs.has(option.value)) {
select.value = option.value;
return false; // stop looping over the options
}
});
});

最新更新