2013-10-15 42 views
0

使用它们在我有一个表格一个选择框,就像这样:获取ID和if语句

<select id="school"> 
    <option>Choose school</option> 
    <option value="656462">test</option> 
    <option value="653671">test1</option> 
    <option value="653688">test2</option>   
</select> 

如何从上面的选项获得期权价值?我想使用下面的jQuery代码中的值:

$("select#school").change(function(){ 

    $("select#locatie").html('<option value="">Course</option>'); 
    $("select#lijst").html('<option value="">List</option>'); 

    $("#cat1").html($("#school option:selected").text()); 
    $("#cat2").html('Course'); 
    $("#cat3").html('List'); 

    var options = ''; 
    $(function(){ 
     $("select#school").change(function(){ 

     $("select#location").html('<option value="">Location</option>'); 
     $("select#list").html('<option value="">List</option>'); 

     $("#cat1").html($("#school option:selected").text()); 
     $("#cat2").html('Course'); 
     $("#cat3").html('List'); 

     var options = ''; 


     if($("#school").val() == 656462){ 
      options += '<option value="">Course</option>'; 
      options += '<option value="12345">test1</option>'; 
     } 
     if($("#school").val() == 653671){ 
      options += '<option value="">Course</option>'; 
      options += '<option value="89887">test2</option>'; 
     } 
     if($("#school").val() == 653688){ 
      options += '<option value="">Course</option>'; 
      options += '<option value="548798">test25</option>'; 
     }    

     $("select#locatie").html(options); 

    }); 
}); 

基本上,对于每个选项值都有一个新的if语句。问题在于选择框中充满了很多自动生成的选项值。所以现在我必须手工完成所有工作,而不是自动生成if语句。

所以我尝试做的是: 1)从 2得到的所有选项值)使用这些选项值,为每个值

任何帮助,不胜感激

+4

“这需要是上述值之一” - 上面的值是什么? 'change'中的'this.value'会给你选定的值。那又怎么样? – tymeJV

+0

看起来你正在尝试做级联选择。你能提供更多的标记吗? – mplungjan

+0

@tymeJV:我已更新问题和标记 – Meules

回答

2

如果创建一个if语句我明白你想要做什么,你想根据第一个结果为第二个选择创建新的选项?通过每个对象

var courseSelection = { 
    "656462": [ { value: "123456", text: "Course 1" }, { value: "234567", text: "Course 2" } ], 
    "653671": [ { value: "345678", text: "Course 3" }, { value: "456789", text: "Course 4" } ], 
    "653688": [ { value: "567890", text: "Course 5" }, { value: "678901", text: "Course 6" } ] 
}; 

,然后在变化的事件处理程序,(如你的状态)可以循环数组来构建相应的列表中:我可能会存储在数组中可能的选择对象上:

$("select#school").change(function(){ 

    var options = '', 
     courses = courseSelection[$(this).val()]; 

    $('select#course').empty(); 

    options += '<option value="">Course</option>'; 

    $.each(courses, function() { 
     options += '<option value="' + this.value + '">' + this.text + '</option>'; 
    }); 

    $('select#course').append(options).show(); 

}); 

JSFiddle描述了我的意思。让我知道,如果我在这里得到了棍棒的错误结局!

+0

直指点。 – melancia

+0

.append可能对选项更好,或appendTo - 如果不是,则第一个.html(<... course ...)无用 – mplungjan

+0

好点,@mplungjan。我已经更新使用append,当然,确保'select'方框在更新之前是'empty()'; –

0

重新思考你的方法。在这种情况下,我会做下列操作之一:

  1. 在#school change事件所选择的值发送给服务器,以获得匹配选项的列表;或
  2. 如果您想在客户端完成所有操作,请为每个可能的值创建一个数组,以提供匹配选项。这样你可以避免所有这些丑陋if陈述。