jquery - 由相关选择动态填充的选择列表上的预选项目
问题描述
这是使用 jquery 和 ColdFusion。我在一个页面上有两个选择 - 一般和专业(一般类别,该类别中的专业)。
<form>
<div class="course">
<div class="row">
<select name="general[]" class="general">
<option value="">--- Select a General Interest ---</option>
<cfoutput query="qryCipMajor">
<option value="#qryCipMajor.stm_cip_fam#"<cfif qryCipMajor.stm_cip_fam EQ cipFam1> selected="selected"</cfif>>#qryCipMajor.stm_major_new# (#qryCipMajor.stm_cip_fam#)</option><!--- cip_name --->
</cfoutput>
</select>
</div>
<div class="row">
<select name="major[]" class="major">
<option value=""></option>
</select>
</div>
</div>
</form>
页面上有 5 个。cipFam1(和 cipFam2 等)变量是根据为用户存储的内容设置的,并允许预先选择一般选择。
如果没有保存任何内容,则可以正常工作。用户选择一个通用类别,该类别的专业填写在相关选择中。如果有保存的选择,则一般类别已正确预选,但我无法弄清楚如何让专业为该类别预加载以及专业本身被预选。jquery 看起来像这样。
$(".general").change(function() {
var selected = $(this).val();
if(selected == "") return;
var $major = $(this).closest('.course').find('.major').empty().append('<option value="">-- Select a Majors --</option>');
$.getJSON(apiPath + "/majorsCFC.cfc?method=queryCipMajorRemote&returnformat=json",{"stm_cip_fam":selected}, function(res,code) {
for (var i = 0; i < res.length; i++) {
$major.append($('<option/>', {
value: res[i].ID,
text: res[i].NAME
}));
};
});
});
我远非 jQuery 专家,并且可以在这里真正使用一些指针来说明如何 1)如果已保存一般类别,则预加载专业列表,然后 2)预选择已保存的专业。
我知道 jQuery 使用 'select' 和 '.val' 指定选定元素的机制 - 但需要了解如何将其合并到动态填充的列表中。我在想,如果 cipFam1 有一个值,并且使用它来将专业的 id 传递给单独的 jquery 函数不是空白的,但这并没有使用该类别中的所有选项预先填充列表.
解决方案
使用data-*
属性存储每个列表的保存值
<select name="major[]" class="major" data-preselectedid="1234">
然后在填充列表后使用它来预先选择适当的选项:
$.getJSON(
// ...
$major.val($major.data("preselectedid"));
});
要预加载列表,请在文档加载时.major
触发事件"change"
$( document ).ready(function() {
$(".general").change(function(){
// ...
});
$(".general").trigger("change");
});
推荐阅读
- javascript - JavaScript:返回字符串的函数的输出输出“未定义”。为什么?
- r - 将调用转换为 r markdown 中的方程
- algorithm - anti-bias algorithm for rating a resturant
- bash - How to rename a file while keeping the middle of the filename in tact
- facebook - Facebook 帖子链接在安装了 FB 应用程序的手机上不起作用
- python - 如何在python中存储精确的十进制数而不进行任何舍入
- c# - 使用团队名称连接到 Entity Framework 中的 Postgresql
- firebase - Firestore.settings() 要求它的第一个参数是对象类型,但它是一个自定义对象
- powershell - 带有 Try...Catch 的 Powershell 函数没有进入函数,因为参数会导致错误
- python - 如何根据nan索引值合并行