使用jQuery检测一个下拉列表的值并更新另一个下拉列表的值
这是我使用Javascript(来自Matlab背景)的第一个周末,在经历了一个令人惊讶的富有成效的周六后,我已经在这方面坚持了几个小时,非常感谢任何帮助 我试图检测一个下拉框的值,然后从解析后端更新另一个下拉框,一个是顶级行业,另一个是子行业。从这里的其他答案来看,这似乎很容易,但尽管它检测到了变化,但实际上从未更新第二个框。数据从解析中很好地到达。我正在使用基础框架、jQuery的最新版本和其他部分中的把手,如果这能起到作用的话。p> HTML:使用jQuery检测一个下拉列表的值并更新另一个下拉列表的值,jquery,parsing,drop-down-menu,Jquery,Parsing,Drop Down Menu,这是我使用Javascript(来自Matlab背景)的第一个周末,在经历了一个令人惊讶的富有成效的周六后,我已经在这方面坚持了几个小时,非常感谢任何帮助 我试图检测一个下拉框的值,然后从解析后端更新另一个下拉框,一个是顶级行业,另一个是子行业。从这里的其他答案来看,这似乎很容易,但尽管它检测到了变化,但实际上从未更新第二个框。数据从解析中很好地到达。我正在使用基础框架、jQuery的最新版本和其他部分中的把手,如果这能起到作用的话。p> HTML: <form class="custom
<form class="custom">
<div class="large-6 columns">
<label for="IndustryDropDown">Area of interest</label>
<select id="IndustryDropDown" class="small">
<option>All</option>
<option>Technology</option>
<option>Services</option>
<option>Financial</option>
<option>Consumer goods</option>
<option>Materials and mining</option>
</select>
</div>
<div class="large-6 columns">
<label for="SubIndustryDropDown">Specific interest</label>
<select id="SubIndustryDropDown" class="small">
<option>Select Area first</option>
</select>
</div>
</form>
jQuery ID选择器需要#,否则您将选择具有该名称的元素(不存在具有该名称的html元素,但xhtml可能会出现这种情况)
因此,
$(“#子行业细分”)
。此外,append()需要一个参数,该参数可以是html字符串、DOM节点,也可以是包含该DOM节点的jquery对象。我不知道Option对象对jQuery是否有效,但如果失败,请执行类似于.append($(“”).attr(“value”,q.Name).text(q.Name))
(这就是我为Option标记生成html的方法,可能有更好的方法)我不确定这个“解析”javascript框架是什么,但这与“解析”的通常含义无关……抱歉,我指的是解析,它本质上是一种后端服务,但标记必须是自动完成的。嗨,非常感谢您的回复,缺少#肯定是个问题,但令人惊讶的是,它仍然没有做任何事情,我还尝试了线程上提出的所有方法。如果我把这些文件放在公共的地方会有帮助吗?是的,事实上,如果你试图得到一个最小的代码测试用例,而这些代码的行为却不起作用,你很可能会自己发现你做错了什么。或者你得到一个实际的最小测试用例来显示问题,并让其他人看到它,呵呵。。。但是我不知道如何设置这个Parse
库,或者它是否依赖于后端服务器。是的,上传一些我可以调试的东西,我们拭目以待。
$("#IndustryDropDown").change(function(){
var SubIndustry = Parse.Object.extend("SubIndustry");
var query = new Parse.Query(SubIndustry);
// change this to a case statement once working
if ($(this).val() == "Technology"){
var Industries = Parse.Object.extend("Industries");
var industries = new Parse.Query(Industries);
query.descending("Name");
query.equalTo("Industry", "Technology")
query.find({
success: function(results) {
$(results).each(function(i,e) {
var q = e.toJSON();
console.log(q.Name) // this prints out the Name entries as expected
$('SubIndustryDropDown').append( new Option(q.Name, q.Name));
});//for each
},//sucess
error: function(error) {
console.warn("error finding quote")
}
});
$('SubIndustryDropDown').append( new Option(q.Name, q.Name));