Pages

系列文章

2014/10/29

【JQuery操作Select標籤系列介紹】【應用篇】JQuery Select標籤連動Select標籤


測試環境
JQuery版本 jquery-1.11.1.min.js(jquery-2.1.1.min.js也可使用),
jquery-ui-1.10.4.custom.min.js
測試瀏覽器 Chrome36.0,Firefox31.0


今天要來介紹一下Select之間互相連動的方法
有的時候我們會需要A下拉選單選擇Item1時
B下拉選單的Item是1,2,3,4,5而A下拉選單選擇Item2時
B下拉選單的Item是6,7,8,9,10
恩這個功能好像沒什麼用處,但是當你跟資料庫做連結時
就會發現其實常常會用到這個功能,說了這麼多廢話
相信初學的人還是不太懂我的意思,沒關係先有個印象
以後遇到才知道要Ggoogle什麼關鍵字
讓我們進入程式介紹的部份吧
Select Tag:
<select id="sel">
  <option value="0">請選擇</option>
  <option value="1">國家</option>
  <option value="2">地區</option>
</select>
被連動的Select Tag:
<select id="sel2"></select>

在上面我們建立的一個Select Tag叫做sel
當中有三個Item分別是「請選擇」、「國家」、「地區」
他們三個的vlaue值分別為0、1、2(這個是要做為判斷條件記得一定要設定唷)
然後再讓我們看看JQuery的部分
//當sel值改變時觸發事件
$("#sel").change(function(){
  //此處用switch case來作為判斷式
  //並以sel各個Option的Value作為判斷條件
  //注意這邊有用parseInt將value值轉為整數型態否則會出現錯誤
  switch (parseInt($(this).val())){
  //默認行為,可以不寫
  default:
  //當value值為0時刪除sel2的Option Item
  case 0: 
      $("#sel2 option").remove();
      break;
  //當value值為1時刪除sel2的Option Item 
  //並用陣列及each迴圈新增sel2的Option Item選項
  case 1: 
      $("#sel2 option").remove();
      var array = [ "美國", "台灣", "中國", "英國", "法國" ];
      //利用each遍歷array中的值並將每個值新增到Select中
      $.each(array, function(i, val) {
        $("#sel2").append($("<option value='" + array[i] + "'>" + array[i] + "</option>"));
      });      
      break;
  case 2: 
      $("#sel2 option").remove();
      var array = [ "歐洲", "亞洲", "非洲", "大洋洲", "南美洲", "北美洲", "南極洲" ];
      //利用each遍歷array中的值並將每個值新增到Select中
      $.each(array, function(i, val) {
        $("#sel2").append($("<option value='" + array[i] + "'>" + array[i] + "</option>"));
      });      
      break;
 }
});

如果想要了解JQuery關於Select的其它相關操作或應用可以參考
【JQuery操作Select標籤系列介紹】
在這邊就不再另外去介紹以前寫過的Code了,避免看的太辛苦
最後大家可以看看實際Dome出來的效果唷


Dome

See the Pen 【JQuery操作Select標籤系列介紹】【應用篇】JQuery Select標籤連動Select標籤 by jen (@jen_huang) on CodePen.

8 則留言:

  1. 你好
    我從知識+過來的
    請續問問題
    比如說
    我從資料庫撈出選項
    有辦法使用jquery做連結嗎??

    假設我選擇 國家
    跳入
    case 1:
    這裡面能做PHP處理動作嗎??

    回覆刪除
    回覆
    1. 邏輯上來說是可以的
      可是這樣其實沒有太大的意義
      妳用JQuery的switch去觸發PHP功能
      根本就是一個重工的行為 而且還要多寫很多Code 並不合算
      直接用PHP的Switch去進行事件處理就好了

      刪除
    2. 要怎麼做呢??
      能否指導一下

      刪除
    3. 我現在沒有PHP環境可以寫Code給你看耶 所以大概跟你說一下邏輯好了
      首先你要了解 JQuery是無法直接呼叫PHP的function而PHP也無法直接呼叫JQuery function的,所以你一定要用JQuery去觸發PHP function的話是要透過HTML作為媒介去做觸發的以你提的案例來說
      你是用JQuery去偵測Select Tag在選擇Item後用switch去判斷再分別去呼叫PHP的function,那麼你想要用JQuery呼叫PHP function就要建立一個HTML按鈕
      作為觸發PHP的介質然後再JQuery的case裡面觸發HTML按鈕這樣就會讓PHP的function有動作了,可是因為這樣會比較麻煩所以我是建議你直接用PHP寫就好

      刪除
  2. 您好,我是個網頁初學者,請教您點選第二層"美國,台灣..."要連結其他網頁或開一個檔案,JS要如何修改.謝謝~

    回覆刪除
  3. 這個問題我不好回答你
    因為你的需求不是很明確 可以做的方法很多 我不可能都打出來
    首先我不知道你要連結的網站或檔案方式是載入還是跳轉頁面
    如果是跳轉頁面可以用
    document.location.href="要前往的網址";
    如果是要載入站外的頁面到自己的網站內
    因為安全性問題 現在的瀏覽器都會阻擋JS的站外載入
    (舊版瀏覽器可能不會出現這種情況)
    如果你是要載入自己站內的頁面可以用
    window.open("連結網址");

    回覆刪除
  4. 作者已經移除這則留言。

    回覆刪除