從本網誌回應數最高的文章得知,大家似乎對多重下拉式選單的功能情有獨鍾啊!Ajax 能夠在不換頁的情況下,達到資料庫連結,是許多人夢寐以求的功能;而 jQuery 易上手與輕鬆操作的特性,讓我們能更簡單的運用 Ajax 達成目的。然而隨著時間的推移,過去介紹的 cascade 已經有很長一段時間沒有更新,而且在使用上其實存在不少綁手綁腳的地方;距離 jQuery 的宗旨「Write Less, Do More」似乎是還差那麼一小段距離...
經由公司的 jQuery 教育訓練,Jace 介紹了一個超讚的 jQuery Plugin:Select box manipulation。透過這個外掛的幫助,可以更輕鬆的實現多重下拉式選單的功能唷,甚至連 cascade 不容易做到的「預設值」也完全沒問題,所需要撰寫的程式碼也少於 cascade,整個就是夢幻的 Plugin!這麼神奇的外掛要怎麼用呢?以下簡單的範例,給有需要的人參考吧:範例是三階層的關聯式多重下拉式選單,分為index.php(呈現頁)、action.php(Ajax 後端資料處理頁)、index.js(JavaScript 處理)、以及 selectboxes首先我們載入 jQuery 以及 selectboxes,同時頁面所需使用的 JavaScript 也利用外部的方式載入:
<script type="text/javascript" src="jquery-1.3.2.min.js"></script> <script type="text/javascript" src="selectboxes.js"></script> <script type="text/javascript" src="index.js"></script>
index.php(節錄):
<h3>主機 - 類型 - 遊戲(預設值:XBOX360/FPS/刺客聯盟)</h3> <p> <select id="select1"> <option value="">請選擇</option> <?php // 資料庫設定 $host_sql = 'localhost'; $username_sql = 'username'; $password_sql = 'password'; // 聯結資料庫 $link = mysql_connect($host_sql, $username_sql, $password_sql) or die('無法連結資料庫'); mysql_select_db('selectboxes', $link); mysql_query('SET NAMES UTF8'); // 動態取得第一階層下拉式選單 $query = 'SELECT id, name FROM games WHERE levelNum = 1'; $result = mysql_query($query, $link); while ($row = mysql_fetch_assoc($result)) { echo '<option value="' . $row['id'] . '">' . $row['name'] . '</option>' . "\n"; } ?> </select> <select id="select2"> <option value="">請選擇</option> </select> <select id="select3"> <option value="">請選擇</option> </select> <!-- 利用隱藏欄位指定預設的選項 --> <input id="fullIdPath" type="hidden" value="3,8,24" /> </p>
有需要填入預設值的時候,至要在隱藏欄位 fullIdPath 中給定 id 的序列值,就可以輕鬆達到設定預設值的效果。
action.php:
<?php // 資料庫設定 $host_sql = 'localhost'; $username_sql = 'username'; $password_sql = 'password'; // 聯結資料庫 $link = mysql_connect($host_sql, $username_sql, $password_sql) or die('無法連結資料庫'); mysql_select_db('selectboxes', $link); mysql_query('SET NAMES UTF8'); // 預設選項 $data['0'] = '請選擇'; // 只有在 parentId 與 levelNum 都存在的情況下,才進行資料庫的搜尋 if (0 !== (int) $_GET['id'] && 0 !== (int) $_GET['lv']) { $parentId = (int) $_GET['id']; $levelNum = (int) $_GET['lv']; $query = sprintf("SELECT id, name FROM games WHERE parentId = %d AND levelNum = %d", $parentId, $levelNum); $result = mysql_query($query, $link); while ($row = mysql_fetch_assoc($result)) { // 將取得的資料放入陣列中 $data[$row['id']] = $row['name']; } } // 將陣列轉換為 json 格式輸入 echo json_encode($data);
將取得的資料放入陣列,在經由 json_encode() 轉換為 json 格式;selectboxes 就可以將其轉化為選項
index.js:
$(function () { // 判斷是否有預設值 var defaultValue = false; if (0 < $.trim($('#fullIdPath').val()).length) { $fullIdPath = $('#fullIdPath').val().split(','); defaultValue = true; } // 設定預設選項 if (defaultValue) { $('#select1').selectOptions($fullIdPath[0]); } // 開始產生關聯下拉式選單 $('#select1').change(function () { // 觸發第二階下拉式選單 $('#select2').removeOption(/.?/).ajaxAddOption( 'action.php', { 'id': $(this).val(), 'lv': 2 }, false, function () { // 設定預設選項 if (defaultValue) { $(this).selectOptions($fullIdPath[1]).trigger('change'); } else { $(this).selectOptions().trigger('change'); } } ).change(function () { // 觸發第三階下拉式選單 $('#select3').removeOption(/.?/).ajaxAddOption( 'action.php', { 'id': $(this).val(), 'lv': 3 }, false, function () { // 設定預設選項 if (defaultValue) { $(this).selectOptions($fullIdPath[2]); } } ); }); }).trigger('change'); // 全部選擇完畢後,顯示所選擇的選項 $('#select3').change(function () { alert('主機:' + $('#select1 option:selected').text() + '/類型:' + $('#select2 option:selected').text() + '/遊戲:' + $('#select3 option:selected').text()); }); });
是不是非常簡單呢!多樣化的 jQuery Plugin 可以幫助我們更輕鬆的完成過去繁複的程式撰寫工作,真的要感謝廣大網路上樂於分享的前輩們的努力,有需要的人可以試試看這個更簡單的方法唷!
線上程式預覽
範例程式下載(範例程式內附 selectboxes.sql 即為測試用的資料庫 sql 檔)

你好,想請教 asp 沒有json_encode(); 這段程式碼要怎麼改呢?謝
抱歉,我跟 asp 不熟...不過 google 了一下發現許多資料,應該是不難找到解決的辦法唷;請參考:http://0rz.tw/SxJk8
您好: 非常感謝您的幫忙,json的部份我已解決了
請問可以做到以上一階層的sql語法 來決定是否有下一階層的下拉式選單嗎? 下拉式選單的數量是動態的 以上一階層的下拉式選單所下的sql 是否有查到資料為準
你好,動態產生下一階層的下拉式選單應該不是問題,只是事件的觸發上可能要利用 $.live() 綁定change 事件(http://bit.ly/jNtA);最近有點忙,這方面實際作法可能要請你自行研究囉~謝謝
你好,我是改您的方法,因為我有兩張資料表[kind]:kind_id、[food]:food_id、kind_id。 在第一個select1 是用種類資料表[kind_id]去顯示,而在選取第二個select2時,JS部分我是這樣寫。 $('#select2').removeOption(/.?/).ajaxAddOption( 'action.php', { 'kind_id': $(this).val() } action.php直接針對 $query = "SELECT food_id,food_name FROM food where kind_id = %d"; 這樣在js依然抓不到值,可以請教怎麼改嘛? 我也想學習樓上詢問的利用sql選取的值,去影響下一層的選單,但$live不支援change... 真的研究很久,但真的寫不出來。可以拜託作者教導嘛,拜託...
您好 我想做五層下拉 在第三層後加了.change.... 第一次load的時候沒問題,但選了其中一個下拉後就會不斷循環跑,不知道是哪邊寫錯了 $('#select3').removeOption(/.?/).ajaxAddOption( '/action.php', { 'id': $(this).val(), 'lv': 3 }, false, function () { // 設定預設選項 if (defaultValue) { $(this).selectOptions($fullIdPath[2]).trigger('change'); } else { $(this).selectOptions().trigger('change'); } } ).change(function () { // 觸發第四階下拉式選單 $('#select4').removeOption(/.?/).ajaxAddOption( '/action.php', { 'id': $(this).val(), 'lv': 4 }, false, function () { // 設定預設選項 if (defaultValue) { $(this).selectOptions($fullIdPath[3]).trigger('change'); } else { $(this).selectOptions().trigger('change'); } } ).change(function () { // 觸發第五階下拉式選單 $('#select5').removeOption(/.?/).ajaxAddOption( '/action.php', { 'id': $(this).val(), 'lv': 5 }, false, function () { // 設定預設選項 if (defaultValue) { $(this).selectOptions($fullIdPath[4]).trigger('change'); } } ); }); });
To 肉包包: 建議可以把每層的 $query 都印出來,丟到 MySQL 看資料是否正確;也可以印出 $data 這個陣列,看看資料格式是否與 AJAX 符合。 哈,原來 $.live() 不支援 change 事件啊~Sorry;可以試著用 click 事件修改? To Amy: 建議也是把出問題那一層的 $query 印出來看看 謝謝
存檔位置好像死了@@
抱歉,重新開機後就忘了啟動 no-ip;現在應該可以下載了,感謝提醒^^
你好,我參考了貴站,完成了三層連動的下拉式選單,但是我想把最後的數據丟到文字框裡是否有辦法?也就是三層的下拉式選單其實都是條件,最後的結果只有一個,我想把這個結果放到文字框裡面,可否請您提供一點意見。
你好,如果是要顯示在 input 中;直接改寫 $('#select3').change() function 的內容即可。不過關於後來提到的條件與結果,是指依照 select 的選擇條件,在重新於資料庫中查詢結果嗎?如果是這樣就要用 AJAX 的方式囉~
對不起, 尚有一事補充, 我如果output JSON的後台程序抽起頭尾兩個 "[" "]", select2的選單就能成功顯示JSON裡最後一筆記錄, 例如剛才的JSON裡的"離島"這樣子...., 請指教 版主回覆:(2010-03-23 17:27:21) 你好,應該是 JSON 格式的問題;程式最後出來的成果應該要是:{"71":"機場","72":"博覽館","73":"欣澳","74":"東涌","75":"迪士尼","87":"離島"},才能正確被接受。請再檢查一下 action.php $data 格式是否正確囉~ 謝謝
請問一下 我想要直接在index.php中的select2抓取下拉式選單的值,出去後直接抓取select2的顯示,那要怎麼抓? 版主回覆:(2010-05-02 11:57:39) 你好,如果只是要取得 select2 的值,可以直接用 JavaScript 的 onchage() 事件處理唷~謝謝^^
超過三層的有人試成功嗎?? 一直試不出來.... 版主回覆:(2010-06-18 10:21:58) 你好,超過三層就是直接巢狀寫下去就可以了~ 比如說有四層,只要把原本 $('#select3') 的寫法改為原本 $('#select2') 的方式,$('#select4') 寫成原本 $('#select3') 方式,應該就沒問題囉!謝謝^^
您好:感謝您分享這邊文章,真的是太實用了~~^^。有個問題請教,"jquery-1.3.2.min.js","selectboxes.js","index.js"這三個檔案要到哪邊下載呢?感謝您的回覆~~^^ 版主回覆:(2010-08-25 10:11:09) 你好,不好意思,文中連結年久失修...(汗)目前已修復,只要點選【範例程式下載】下載即可,謝謝^^
您好,我試過四層,用巢狀的寫法寫,多run幾次後,就會出現整個當掉,不知道和false之後的function是否有關,能否提示一下那個function的功用? 感激不盡...
你好, 我嘗試在form ('post')下使用你的教學,但是無法產生第二層、第三層的選單。 但把select 移出form 外就正常。 請問我要怎樣改寫?
你好,存檔無法下載,請版主解決一下@@
你好,有幸看到大哥寫的php,小弟目前使用大哥的,不過很奇怪的是,三層都搜的到,但第二層之後的資料都是顯示null..因我自己也不知道原因在哪,還請大哥解答
範例我下載了測試,我只修改連接資料庫的參數,其他幾乎未動到(index.php及action.php) 只有第一層選單有值出現,第二、三都無反應,不知是否還需要調整哪裡,麻煩指點,感恩 我的環境 CentOS 5.5 php 5.16
請問各位大大,有沒四層,五層的資料庫範例? 一直試不出來 版主回覆:(2011-12-02 11:13:16) 多層的方式應該沒有什麼差別,只是巢狀寫下去而已...請再多試試看吧!加油^^|||
我也是出現相同狀況 只有第一層選單有值出現,第二、三都無反應,不知是否還需要調整哪裡,麻煩指點,感恩 版主回覆:(2011-12-02 11:15:23) 依照範例程式的資料庫結構實作,應該是不會有問題的唷~請留意資料表中是否有 parentId 與levelNum 欄位,它們是判斷關聯的重要依據唷~
不好意思,範例原始檔好像無法下載,不知道能否修正一下
你好,我的問題是 到目前為止都成功可以下拉出來 如果我要把下拉選出來的值 存入資料庫的話 不知道有沒有方法可以實現? 因為據我所知選單的值是從資料庫抓的 沒辦法用一般的方法把值存入資料庫 版主回覆:(2011-12-02 11:17:06) 取得的值可以利用 JavaScript 放在 hidden 的 input 中,經由正常表單送出即可儲存了
請問如果我是動態產生多重下拉選項,當產生一個多重下拉選項以上時,可以用什麼方法讓他維持用作呢?謝謝 版主回覆:(2011-12-02 11:17:35) 不好意思,我看不太懂你的問題...^^|||
版主: 我的問題是 我點選了select1:第三項 當我重新點選select1:第三項 select2卻無法被重新以資料庫內容重新顯示 版主回覆:(2011-12-02 11:20:21) 程式 change 事件是以串聯的方式撰寫,所以照理來說應該是可以被連續觸發的唷;請確認一下 JavaScript 的部分是否有誤。
大大愛死你了=ˇ=b~ 版主回覆:(2011-12-02 11:20:58) 希望有幫上你的忙,謝謝^^
請問大大可以重發此貼嗎? 版主回覆:(2011-12-02 11:23:22) 「重發此貼」是什麼意思啊?^^|||
不好意思,範例檔不能下載了,可以幫忙看一下嗎 版主回覆:(2011-12-10 02:54:27) Sorry,機器關機了...已重新啟動,請再試試看囉~
急!!!!! 請問如果把id資料型態改成varchar 因為階層多需要用到英文字編id 所以ation.php裡的 if (0 !== (int) $_GET['id'] && 0 !== (int) $_GET['lv']) { $parentId = (int) $_GET['id']; $levelNum = (int) $_GET['lv']; 兩個$_GET['id'];前面(int) int要改成什麼 varchar、var、char都試過了 版主回覆:(2011-12-22 19:14:32) 直接拿掉就好了~(int) 相當於 php 的 intval() 函式,只是為了強制轉型;如果你不需要直接拿掉就可以了唷!
請問如果要多增加一層階層應該要怎麼做才行? 版主回覆:(2011-12-25 10:21:30) 請參考之前的回應唷,試著用巢狀的方式寫下去;謝謝
到目前為止,每層選單都能夠成功從資料庫選取 那麼請問 要如何再將所選到的一次存進資料庫 版主回覆:(2012-01-24 16:38:30) 上面 Killna 的回應有回答過囉~請參考!
不好意思,範例原始檔好像無法下載,不知道能否修正一下^^ 版主回覆:(2012-03-13 18:31:51) 已修復,請再試試看~謝謝
您好,我寫好可以用了 可是我如果從資料中使用 .getJSON抓資料時 不會把值帶入 這個要怎麼處理? 我的程式如此寫 var defaultvalue = false; if(0 < $("#csf").val().length) { var fullIdPath = $("#csf").val(); defaultvalue = true; } if(defaultvalue) { $("#csf").selectOptions($fullIdPath[0]); } $("#csf").change(function() { $("#name").removeOption(/.?/).ajaxAddOption("getbudgetcsfchild.php", {csfid: $(this).val()}, false, function() { if(defaultvalue) { $(this).selectOptions(fullIdPath[1]).trigger('change'); } else { $(this).selectOptions().trigger('change'); } } ); }).trigger("change"); 版主回覆:(2012-08-02 17:54:02) 你好,看起來問題點應該是出在 $fullIdPath,這個變數在我的範例中是一個陣列唷!$(\'#fullIdPath\').val() 代表預設階層的 id,由「,」分隔,所以範例中我有使用 split 把它轉換成陣列;請確認一下你的程式碼中的 fullIdPath 是否為陣列唷~謝謝
你好 請問一下如果我有四千多筆資料 該如何建立parentid and levelNum呢?? 謝謝~~~ 版主回覆:(2012-09-19 22:22:47) 你好,無關資料的筆數,資料間的階層關係才是重點,請參考範例程式 sql 檔的資料表結構唷~謝謝^^
我加到第四層測試選單多次都正常不會當掉 但是第五層IE會死當 是IE的問題? 版主回覆:(2012-12-07 13:49:30) 你好,因為是用 AJAX 呼叫,建議可以使用開發者工具檢視錯誤訊息,謝謝^^
版主你好, 我是新手不太了解怎麼抓巢狀語法,可不可以提供四層的語法,不管怎樣試都不成功,麻煩你的幫忙,感謝!! 版主回覆:(2013-02-01 16:45:10) 你好,方向已經確定,接下來的實作必須由你自己完成唷!建議可以試著先改成二層,成功後比較一下三層的方式,就會知道四層怎麼做了!謝謝^^
你好,我想詢問一下。 在select3顯示,我改成在input中去,這邊都沒啥問題。 但因我的頁面中需要兩組以上做select,但只有第一組的select能夠正常動作,第二組就只有第一層能動作,第二層就卡住了,這有什麼方式能處理嘛?感謝。 版主回覆:(2013-05-09 14:43:35) 你好,可以檢查一下第二組的 id 是否跟第一組是否有重複唷~謝謝
版主你好 我用你的範例修改了一下 我只需要2層就可以了 要做店家搜尋的功能 第一層為縣市 第二層為區域 但我想要在選完之後把區域回傳到index.php 之後用區域的代碼到資料庫抓資料顯示那個區域有的店家在下方 前面的部分,也就是選了縣市.區域然後跳出選擇的選項已經可以用了 後面回傳的部分就有障礙了 我在index.php可以顯示表格但是是要從程式碼改 所以想問一下要怎麼把選擇完後區域的代碼回傳給index.php 版主回覆:(2013-05-29 18:21:21) 你好,如果只是要縣市區域,建議直接使用網路上前輩們提供的現成的 javascript code 比較方便唷!至於選擇後的數值,應該直接 POST 過去就可以拿到了吧?謝謝
版主好: 感謝版主,我參考您的code成功改成四階層了,但我的應用是有時候要四層有時後要三層。 請問要在哪裡寫判斷是否有下一層呢? 版主回覆:(2013-09-02 17:39:20) 你好,比較簡單的方式,是設一個隱藏的欄位,再判斷最內層的 change 是否要動作。謝謝
謝謝版主的意見,但不好意思,還是不太懂版主的意思 意思是說在index.php那裡多加一個隱藏欄位嗎? 然後在資料庫多加一個欄位判斷是否有到最後一層?決定要觸發哪一個$('#selectX').change...嗎 像是這樣嗎 if(有第四層) { ('#select4').change.. }else {('#select3').change..} 版主回覆:(2013-09-03 12:13:17) 你好,隱藏欄位就是範例中預設值,type 是 hidden 的 input;在 js 判斷:
$('#select3').change(function() {
if (isFourth) {
// 觸發第四階下拉式選單
}
});
謝謝
版主您好: 1.請問$.post的第一個參數是url,請問您寫的/is_Fourth是什麼樣的寫法呀?(只有看過xxx.php這種寫法) 2.您的作法我大概理解了,但是要 在哪裡 宣告json的資料,在哪裡改變isFourth的值呢?這樣還需要隱藏欄位的資料嗎? 宣告isFourth資料的樣子是這樣嗎? $.ajax({ type: "POST", url: url, data: isFourth, dataType: json }); p.s.如果還是有隱藏欄位 那資料應該是從隱藏欄位那裡抓過來判斷是否觸發第四層 如果沒觸發在修改...但是在哪裡修改?如果不用隱藏欄位那isFourth資料該從哪裡來...邏輯好難理解 版主回覆:(2013-09-05 11:31:16) 你好,/is_fourth 就是 url 沒錯,因為 framework 用習慣了,.php 就被我省略了(汗);以 $.ajax 的寫法,dataType: json 就可以將回傳資料指定為 JSON 格式;最後 php 回傳的方式大概會像這樣 echo json_encode(array(\'isFourth\' => true));
因為看起來有沒有第四層資料這件事,似乎是由第三層決定,而不是一開始就知道;所以就不需要隱藏欄位了,直接由 AJAX 的方式去取得第四層是否有資料即可。如果有資料,就觸發第四層的顯示,反之就不動作。謝謝
http://jsfiddle.net/Jdk8s/3/
版主你好: 小弟嘗試將你的範例改成,第一層是固定的,值是資料表欄位(例如作者,主題,日期)。 我只需要兩層就好,因為對 AJAX 不熟,所以不知道該怎麼下手,第二層一直出不來,所以想請版主給點建議,多謝。。。 版主回覆:(2013-09-29 21:15:56) 你好,如果只有二層,我建議用單純的 AJAX 就好,比較單純也簡單;可以試試看 $.ajax,謝謝
版主安阿: 我有用 $.ajax 試過,也有成功,只是當第二層送出資料的時候,兩層選單都會回到一開始的狀態,不會停在選的那個值,不知道要怎麼處理。。。(這樣懂我的意思嗎??) 版主回覆:(2013-09-29 22:39:58) 你好,其實我不太懂...送出應該就換頁了吧?還是說送出也是 AJAX?送出後還需要保留原來選定的值嗎?謝謝
版主你好: 我想問一下能在第三層時,能自定那個option的value?例如: USA 因爲我是拿來計算的. 謝謝 版主回覆:(2013-10-29 09:44:46) 你好,我不太了解你的提問;這個範例是使用 AJAX 取得資料庫的資料,如果你需要直接改變任意下拉式選項的值,直接使用 JavaScript 就可以了~謝謝
版主您好: 我是跟您的方法做,我想問的是如何能在第二層或者第三層的時候,如何從數據庫那裡拿到數值,然後放進option的value? 您的方法只是在放選單顯示的部分,而value就沒有講怎麼設定 因為那個 ajaxaddOption 好像不讓自訂option的value,因為我要用option 的 value 來計算 謝謝版主 版主回覆:(2013-10-30 14:35:27) 你好,ajaxaddOption 內定會自動把 AJAX 回傳的 JSON 解析,key 值是 option 的 value,value 值是 option 的 text;謝謝
版主你好: 目前我正在嘗試寫一個無限層的下拉選單(選完一個後再展出另一個),關於這部份已經實作成功在Chrome測都正常,但一開IE測時,大約前四個select都沒有問題,直到選完第四個要展出第五個的時候,會發生滑鼠沒有辦法再選擇下去的狀況(選單很快的閃爍一下又收回去),資料的部份是確定有AJAX撈到,但IE就是發生問題,有什麼可能原因嗎? 版主回覆:(2013-11-20 12:06:38) 你好,太多階層其實不建議倚靠這種套件,自己寫會比較合用也比較好除錯~謝謝
我看到某樓的樓友和我問題一樣,IE到第五層就選不出來,看過F12除錯也都沒有訊息產生一切正常,該如何是好...
不知道有沒有人發現到,這個下拉js會重複跑多次查詢... 不知道這算bug還是程式本身的邏輯就是醬呢? 版主回覆:(2013-11-20 12:09:08) 你好,確實有這種狀況,如果了解原理,又不想因重複查詢造成資料庫負擔,建議自己寫會比較合適,謝謝
版主您好~ 我嘗試用了你的範例修改了一下~ 可以正常使用~從資料庫撈資料~ 但是在第三層選完之後~送出表單~ 卻接收不到值~不知道是哪裡出錯~ 版主回覆:(2014-01-20 14:07:58) 你好,範例的 select 沒有設 name 屬性,請在實際使用時自行設定,送出後端才會接收到值喔,謝謝
可以了~ 真的感謝大大~ 看來我還要多多努力學習~~ 再次多謝大大~~~ 版主回覆:(2014-01-20 15:16:16) 哈,有解決問題就好,謝謝
版主~ 有個問題? 就是表單送出之後~如何將選值固定? 我有試過~再撈一次~但是好像不行!! 版主回覆:(2014-01-20 17:36:40) 你好,我不太懂「選值固定」是什麼意思?是指預設值嗎?請參考範例唷~謝謝
就是表單送出之後~選單都會回到第一個選項~ 不會固定在選擇的項目~ 版主回覆:(2014-01-20 18:25:56) 你好,預設值請參考範例,謝謝
Thanks, I have just been searching for info about this subject for ages and yours is the best I have came upon till now. However, what concerning the bottom line? Are you certain in regards to the source?
版主你好 這次是我第一次做這種連動的三層式選單 我還沒有去修改任何內容 只是複製和下載你提供的所有資料 預覽效果測試功能時卻失效了 只有第一層選單可以選 其他兩層都沒有顯示資料 操作不到 我核對了多次還是不知道問題在哪 版主回覆:(2014-09-18 15:39:29) 你好,請先釐清是前端 JavaScript 還是後端 PHP 的問題,可以多利用 firebug 除錯,謝謝
版主大大 謝謝回覆 用firebug也沒有顯示問題 我進入你的範例:線上程式預覽 一切正常 我還嘗試將你的範例另存網頁下來 再點開測試 也變成失效了 版主回覆:(2014-09-18 16:46:45) 你好,另存網頁是絕對不會有反應的,因為整個範例除了前端 JavaScript、HTML 還有後端 PHP 與資料庫;謝謝
版主大大 那我該怎麼做呢 才能做到你那樣的效果? 我試了各種方法都做不到 版主回覆:(2014-09-21 15:51:25) 你好,因為問題不明確,關於這方面我無能為力;不好意思,謝謝
版大您好,請問在index.js中,removeOption(/.?/)裡面的/.?/是甚麼意思呢..@@? 先謝謝您了! 版主回覆:(2015-10-20 15:35:17) 你好,/.?/ 是正規表示式,他會把所有有值的 option 移除。關於正規式可以參考 wiki 說明:https://goo.gl/fD7hgv,謝謝
請問 我不管是下載您的資料 還是線上看 都只能選第一層的選項....
版主你好 我下載了你的壓縮檔 也匯入資料庫 但是就是無法正常執行 只有第一個下拉是選單可以執行而已 我是不是有甚麼東西遺漏掉了 請版主題點 版主回覆:(2015-12-09 09:55:56) 你好,第一個沒有問題至少資料庫連線與資料取得都 OK,可能是 javascript 錯誤或是 AJAX 取得第二個資料時發生錯誤;建議安裝 firebug 看看背景執行的程式有什麼錯誤喔。謝謝
版主你好 請問要如何讓下拉選項能輸入文字去收尋呢? 我試了一些網路上的方法 好像都會跟這個版本相牴觸 版主回覆:(2017-04-26 10:25:07) 你好,如果是自動完成,可以參考一下 select2 這個 plugin 喔~謝謝 https://select2.github.io/examples.html
版主, 目前不能下載範例 請問可以再開放下載嗎?? 版主回覆:(2017-05-22 09:36:58) 你好,前陣子原本用的域名被停掉了...已修改成新的域名,請參考~不過提醒一下,這篇文章有點久遠,現在應該有更好的方式,如果不急可以再多找找,謝謝
版主你好 我參考了你的範例去寫了自己的下拉式選單 可是最後再改index.js檔最後的alert那邊 改完之後顯示出來的卻是沒改過的樣子 請問是什麼原因呢?? 版主回覆:(2017-06-16 21:25:30) 你好,只憑這個敘述很難幫你 debug,或許你可以先試著一次不要改太多,比如先只改 alert 顯示的文字,一步一步慢慢修改。另外善用瀏覽器 F12 協助 debug 也可以幫助你找到問題喔~謝謝
我只有改這樣 可是秀出來還是原先的 主機 類型 遊戲 甚至我整段刪掉還是秀出主機 類型 遊戲 $('#select3').change(function () { alert('水果' + $('#select1 option:selected').text() + '/縣市:' + $('#select2 option:selected').text() + '/鄉鎮:' + $('#select3 option:selected').text()); }); 版主回覆:(2017-06-16 22:16:27) 你好,如果不是改錯檔案,或許是瀏覽器的 cache,換個瀏覽器或是使用 Chrome 的無痕模式試試看吧~謝謝