javascript - 当表单控件选项具有多个参数时,如何填充组合框中的所选项目?

标签 javascript ajax model-view-controller combobox

我正在尝试将保存的所选项目填充到表单控件中。

<select class="form-control">
    <option data-parameter-id="685" data-parent-id="1052" data-aggregation-id="null" data-aggregation-parameter="null">ABC</option>
    <option data-parameter-id="993" data-parent-id="0" data-aggregation-id="43" data-aggregation-parameter="2">DEF</option>
    <option data-parameter-id="993" data-parent-id="0" data-aggregation-id="39" data-aggregation-parameter="null">XYZ</option>
<select>

当我获得外部输入值(例如:选择数据聚合 id=39 的第三行)时,必须选择选项中的相应值。 我的代码写为

var savedOrderedAttributeId = $('#ordered-attribute-id').val();
var savedOrderedAttributeAggregationId = $('#ordered-aggregation-id').val();
var selectorForOptionWithSavedParameter = '"select"'+ ' option[data-aggregation-id="' + savedOrderedAttributeAggregationId + '"' + 'data-parameter-id="' + savedOrderedAttributeId + '"]';
$(controlSelector).find("select").val($(controlSelector).find(selectorForOptionWithSavedParameter).val());

必须对代码进行哪些更改才能根据这两个参数选择选项?

最佳答案

首先,您必须循环选择选项并检查哪个选项与您要查找的数据聚合 ID 匹配。例如

var savedOrderedAttributeId = $('#ordered-attribute-id').val();
var savedOrderedAttributeAggregationId = $('#ordered-aggregation-id').val();
    
$('select option').each(function(o) {
  
  if($(this).data('aggregation-id') == savedOrderedAttributeAggregationId && 
     $(this).data('parameter-id') == savedOrderedAttributeId) {
    //alert('found it');
    $(this).attr('selected', 'selected');
    return false;
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control">
    <option data-parameter-id="685" data-parent-id="1052" data-aggregation-id="null" data-aggregation-parameter="null">ABC</option>
    <option data-parameter-id="993" data-parent-id="0" data-aggregation-id="43" data-aggregation-parameter="2">DEF</option>
    <option data-parameter-id="993" data-parent-id="0" data-aggregation-id="39" data-aggregation-parameter="null">XYZ</option>
<select>

关于javascript - 当表单控件选项具有多个参数时,如何填充组合框中的所选项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28470703/

相关文章:

Javascript 拦截 "Ctrl+O"不打开我的文件对话框

javascript - URL查询参数

JavaScript 添加十进制数字问题

objective-c - 每个 .swift 文件不应该是一个类吗?

c# - 如何遍历模型以在 MVC 中找到相似的值

javascript - 函数循环的可能解决方案

javascript - 如何强制加载页面上的每个元素?

php - 用于创建下载文件的 Jquery AJAX 调用似乎运行了两次 - 很难理解为什么 :o(

php - AJAX 中的 "Reload the page to get source for ..."

java - 我在 jsp 页面上检索下拉选项的数组值时遇到问题