使用jQuery检测一个下拉列表的值并更新另一个下拉列表的值

使用jQuery检测一个下拉列表的值并更新另一个下拉列表的值,jquery,parsing,drop-down-menu,Jquery,Parsing,Drop Down Menu,这是我使用Javascript(来自Matlab背景)的第一个周末,在经历了一个令人惊讶的富有成效的周六后,我已经在这方面坚持了几个小时,非常感谢任何帮助 我试图检测一个下拉框的值,然后从解析后端更新另一个下拉框,一个是顶级行业,另一个是子行业。从这里的其他答案来看,这似乎很容易,但尽管它检测到了变化,但实际上从未更新第二个框。数据从解析中很好地到达。我正在使用基础框架、jQuery的最新版本和其他部分中的把手,如果这能起到作用的话。p> HTML: <form class="custom

这是我使用Javascript(来自Matlab背景)的第一个周末,在经历了一个令人惊讶的富有成效的周六后,我已经在这方面坚持了几个小时,非常感谢任何帮助

我试图检测一个下拉框的值,然后从解析后端更新另一个下拉框,一个是顶级行业,另一个是子行业。从这里的其他答案来看,这似乎很容易,但尽管它检测到了变化,但实际上从未更新第二个框。数据从解析中很好地到达。我正在使用基础框架、jQuery的最新版本和其他部分中的把手,如果这能起到作用的话。p> HTML:

<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));