Javascript實現動態菜單添加

來源:互聯網
上載者:User

在註冊資訊的時候,常常需要通過下拉式功能表讓使用者選擇,而且希望使用者在第一個下拉框做的選擇,影響第二個下拉框的內容。有時候,如果第一個下拉框不作出選擇,第二個下拉框根本不會頁面上顯示,為了給使用者呈現一個更清晰的頁面。

先來看看效果:

Html源碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>動態改變菜單</title><script type="text/javascript" src="jquery.js"></script><script type="text/javascript" src="SelectMenu.js"></script></head><body><form action="#"><br/><br/><br/>    <div class="Address">               <span class="Province">Province:            <select>                <option value="" selected="selected">Please Choose Province</option>                <option value="HeBei">HeBei</option>                <option value="ShanDong">ShanDong</option>            </select>         </span>           <span class="City" style="display:none">City:            <select>            </select>        </span>        <span class="Area" style="display:none">Area:            <select>            </select>        </span>        <br/>         <br/><span class="AddressSelect" style="display:none"></span>    </div></form></body></html>

Javascript源碼

$(document).ready(function () {        //找到三個下拉框    var ProvinceSelect = $(".Province").children("select");    var CitySelect = $(".City").children("select");    var AreaSelect = $(".Area").children("select");    var AddressSelect=$(".AddressSelect");        //給第二個下拉框註冊事件    ProvinceSelect.change(function () {        //1、擷取當前下拉框的值         var ProvinceValue = $(this).val();        //1.1隻要第一個下拉框內容有變化,第三個下拉框就要隱藏起來        AreaSelect.parent().hide();        AddressSelect.hide();AddressSelect.html("");        //2、如果值不為空白,則顯示城市下拉框         if (ProvinceValue != "") {   CitySelect.html("");                   $("<option value=''>Please Choose City</option>").appendTo(CitySelect);switch(ProvinceValue)   {//實際項目中,這個城市數組肯定是在伺服器擷取的,這裡為了簡便,我就直接自訂了一個數組                        //如果追求完美,這裡還可以加一道緩衝,防止重複擷取   case "HeBei":            var CityOfHeBei=["ShiJiaZhuang","CangZhou","LangFang"];   for(var i=0;i<CityOfHeBei.length;i++){ $("<option value='"+CityOfHeBei[i]+"'>"+CityOfHeBei[i]+"</option>").appendTo(CitySelect); } break;   case "ShanDong": var CityOfShanDon=["JiNan","DeZhou","QingDao"]; for(var i=0;i<CityOfShanDon.length;i++){ $("<option value='"+CityOfShanDon[i]+"'>"+CityOfShanDon[i]+"</option>").appendTo(CitySelect); } break;   }                 CitySelect.parent().show();           } else {            CitySelect.parent().hide();        }    }); //給第二個下拉框註冊事件 CitySelect.change(function () {var CityValue = $(this).val();AddressSelect.hide();AreaSelect.parent().hide();AddressSelect.html("");        if (CityValue != "") {   AreaSelect.html("");                   $("<option value=''>Please Choose Area</option>").appendTo(AreaSelect);switch(CityValue)   {   //實際項目中,這個區數組肯定是在伺服器擷取的,這裡為了簡便,我就直接自訂了一個數組   //如果追求完美,這裡還可以加一道緩衝,防止重複擷取   case "ShiJiaZhuang":            var AreaOfCity=["GaoXinQu","KaiFaQu","XinHuaQu"];   for(var i=0;i<AreaOfCity.length;i++){ $("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect); } break;   case "CangZhou": var AreaOfCity=["XinHuaQu","YunHeQu"]; for(var i=0;i<AreaOfCity.length;i++){ $("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect); } break;   case "LangFang":var AreaOfCity=["AnCiQu","GuangYangQu"];for(var i=0;i<AreaOfCity.length;i++){ $("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect); }    break;   case "QingDao":            var AreaOfCity=["GaoXinQu","KaiFaQu","XinHuaQu"];   for(var i=0;i<AreaOfCity.length;i++){ $("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect); } break;   case "DeZhou": var AreaOfCity=["XinHuaQu","YunHeQu"]; for(var i=0;i<AreaOfCity.length;i++){ $("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect); } break;   case "JiNan":var AreaOfCity=["AnCiQu","GuangYangQu"];for(var i=0;i<AreaOfCity.length;i++){ $("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect); }    break;   }                 AreaSelect.parent().show();          } else {            AreaSelect.parent().hide();        }    });AreaSelect.change(function(){var AreaValue=$(this).val();AddressSelect.html("");if (AreaValue!=""){$("<span>The Address Is --Province: "+ProvinceSelect.val()+"  City: "+CitySelect.val()+"  Area: "+AreaSelect.val()+"</span>").appendTo(AddressSelect);AddressSelect.show();//alert("The Address Is  Province: "+ProvinceSelect.val()+"  City: "+CitySelect.val()+"  Area: "+AreaSelect.val());}    })});

這裡還引用了Jquery,貌似實現這個效果,用不用都無所謂,最近為了熟悉Jquery的用法,所以就加上了。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.