作者TonyQ (骨頭)
看板Ajax
標題Re: [問題] 選擇了選單的某一選項後,要能出現文字欄位
時間Tue Nov 13 16:22:47 2007
※ 引述《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
1F:推 qazsd:YES!!成功了!! 感謝^^ 11/13 16:40
2F:推 qazsd:其實不一定要設為1,只要不超過兩陣列的值就好 11/13 16:46
3F:→ TonyQ:其實簡單來說 只要有把"其他"這選項刪掉就可以避免了 11/13 17:18
4F:→ TonyQ:不過斟酌前後題意我是覺得設成1比較OK XD 11/13 17:19
5F:推 qazsd:刪掉"其他" 可能會跑不動喔 如果設成""還是會有該空白選項 11/13 17:19
6F:→ qazsd:真要簡單的話..兩個陣列的個數弄成一樣就不用多加你那行了:) 11/13 17:20
7F:推 qazsd:不過還是讓選項出現在選單裡較好,不常見的再讓使用者輸入 11/13 18:03
8F:→ qazsd:因此第二個選單就不會屈就於跟第一個選單選項的數量一樣。 11/13 18:04
9F:→ qazsd:更正~是國外國家的數量就不會屈就於跟台灣縣市的數量一樣:P 11/13 18:05
10F:→ TonyQ:呵 我沒有仔細看懂你程式的邏輯,只用一些基礎準則判斷。:P 11/13 18:23