看板 Ajax 關於我們 聯絡資訊
※ 引述《qazsd (nice play!)》之銘言: : // : //分別取得兩個選單 的reference : var oRegionList = document.getElementById('region'); : var oPlaceList = document.getElementById('place'); : //後端傳回 JSON 資料的路徑 : var sURLInit = "place.php"; : //用來儲存 JSON 的全域變數 : var json; : //一開始時先將第二個選單停用 : oPlaceList.disabled = true; : //第一個選單的 onchange 事件,用來產生第二個選單的內容 : oRegionList.onchange = function() { : //如果選擇的是第一個選項,第二個選單只顯示"請選擇",並且無法使用。 : if(this.selectedIndex == 0) { : oPlaceList.options.length = 0; : oPlaceList.options[0] = new Option("----請選擇----",0); : oPlaceList.disabled = true; : document.getElementById('place_other').innerHTML=' '; : } else { : //如果有選擇其他選項,送出 Ajax 跟後端要求第二個選單的資料。 /*try this , 猜的, 不過我想應該有幫助. */ oPlaceList.options.length = 1; /*只留下"請選擇"的選項*/ : //產生要求資料的 url,加入第一個選單所選擇的選項值作為參數 : sURL = addURLParam(sURLInit,"id",this.options[this.selectedIndex].value); : //建立 XMLHttpRequest 物件,並且送要求 : var oRequest = new XMLHttpRequest(); : oRequest.open("get", sURL, true); : //接收資料的 callback 函數 中略 : 如果有些看不到 : 請參考前幾篇裡提供的網址,從中可以下載原本的原始檔 -- 另外如果你是回在版上 , 不用順便回到我信箱 , 我都會看 . XD --  ▄▅▆▇███▇▆▅▄▃        ╰┼╯─╮ ╮         ◥███████████◣       ╰┼╯=│=│         ◥██████───────    *. ╯  ╯ ╯ の 物 語 .*  ◥███████──────◣ ~ ◢◣             ◢◣  ◥██████───────◤   ◥◤  空白的世界.翼 ◥◤  ◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂telnet://tony1223.no-ip.info -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.59.247
qazsd:YES!!成功了!! 感謝^^ 11/13 16:40
qazsd:其實不一定要設為1,只要不超過兩陣列的值就好 11/13 16:46
TonyQ:其實簡單來說 只要有把"其他"這選項刪掉就可以避免了 11/13 17:18
TonyQ:不過斟酌前後題意我是覺得設成1比較OK XD 11/13 17:19
qazsd:刪掉"其他" 可能會跑不動喔 如果設成""還是會有該空白選項 11/13 17:19
qazsd:真要簡單的話..兩個陣列的個數弄成一樣就不用多加你那行了:) 11/13 17:20
qazsd:不過還是讓選項出現在選單裡較好,不常見的再讓使用者輸入 11/13 18:03
qazsd:因此第二個選單就不會屈就於跟第一個選單選項的數量一樣。 11/13 18:04
qazsd:更正~是國外國家的數量就不會屈就於跟台灣縣市的數量一樣:P 11/13 18:05
TonyQ:呵 我沒有仔細看懂你程式的邏輯,只用一些基礎準則判斷。:P 11/13 18:23