2012-12-29 113 views
0

我一直在這裏尋找一段時間,但我沒有真正發現我需要什麼。根據另一個列表更新選擇列表

我有一些老師在其中的下拉列表。第二個列表應該包含他/她教的課程。

所以,一個小例子:

X先生教數學和生物。 Y女士教數學

如果在第一個列表中選擇了X,第二個列表應該包含數學和生物學。如果選擇Y,則列表只應包含數學。

PHP部分,HTML,CSS不是問題,它只是關於第二個列表的'刷新/更新'。

<select name="lecturer_id" id="lecturer_id"> 
    <option value="22">X</option> 
    <option value="30">Y</option> 
</select> 

我正在尋找一個非常簡單的解決方案,因爲我對JavaScript的知識很差。所以這就是爲什麼我更喜歡jQuery解決方案。

- 更新

的數據從數據庫正在添加。我的應用程序目前生成以下HTML: http://pastebin.com/9rEWKAkF

這兩個列表lecturer_id和coure_id是動態生成的,包含我的數據庫中的信息。我想更新的列表是第二個,course_id。我希望這更清楚。

+0

1)您是否嘗試過任何JS? 2)每位教師的課程名單從哪裏來?硬編碼?對服務器的請求? –

+0

你有什麼試過的?你打算如何篩選課程名單,只是由老師教授的?數據在哪裏?你的問題太廣泛,包含太多的未知數。 –

+2

「你試過了什麼?」他說他的知識很差,所以假設他根本不知道。問題很簡單明瞭。國際海事組織,我不明白downvotes。我們都是從某個地方開始的,不要那麼緊張。 –

回答

3

這很簡單,附加到第一個選擇器更改事件處理程序,它將更新其他選擇器。

HTML:

<select name="lecturer_id" id="lecturer_id"> 
    <option value="22">X</option> 
    <option value="30">Y</option> 
</select> 
<select name="discipline" id="discipline"> 
</select>​​​​​​​​​​​​​​​​​​​​ 

JS:

var teachers = { 
    22: ['math', 'biology'], 
    30: ['math'] 
} 
var dis_update = function() { 

    var lecturer_id = $('#lecturer_id option:selected').val(); 
    var dis = $('#discipline').empty(); 
    for (i in teachers[lecturer_id]) { 
        var d_name = teachers[lecturer_id][i]; 
        dis.append($('<option>').val(d_name).text(d_name)); 
    } 
} 
$('#lecturer_id').change(dis_update); 
dis_update();​ 

DEMO

+0

我也要感謝你。請參閱我上面的評論請:-) –

3

好吧,我不知道你怎麼會擁有的數據爲您的選擇框,但我會給你一些代碼爲你的啓動。我編寫它儘可能的簡單,所以你可以把它理解

//here is your sample data array 
var data = {"X":['maths','bio'], 
     "Y":['maths']}; 

//the event listener for lecturer selectbox that will listen for selection changes 
$('#lecturer_id').change(function(){ 

//gets the value of the lecturer select box 
var selecti = $('#lecturer_id >option:selected').text(); 
     //ensure to empty the other select box for subjects 
     $('#teaches').empty(); 
     var i = 0 ; 
     //append the subjects of the lecturer on the other select box 
     for(i = 0; i < data[selecti].length; i++){ 
      //add an option element for every item 
     $("#teaches").append('<option>' + data[selecti][i] +'</option>'); 
     } 
}); 

的演示爲您的處置 http://jsfiddle.net/nCA9u/

+0

感謝您的信息,我的數據是在數據庫中。對於每位老師,我都有他的user_id和他的名字的記錄。對於一門課,實際上是一樣的:id和一個名字。 我試過你的例子,但我並沒有真正成功。我想這個代碼應該添加在頁面的底部,對吧? 爲了使它更清楚,我已經上傳了我的應用程序生成的HTML代碼現在:http://pastebin.com/9rEWKAkF (所以用COURSE_ID列表應該更新動態地) –

+0

以及你看到我的小提琴?我認爲JavaScript中的JavaScript代碼必須在你的代碼中的任何地方工作,只需包含'$(document).ready *()' –

+0

這就是我所想的,但它似乎對我的代碼沒有任何影響... –

相關問題