歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> jQuery實戰-級聯下拉框

jQuery實戰-級聯下拉框

日期:2017/3/1 10:37:15   编辑:Linux編程

jQuery實戰-級聯下拉框:

chainselect.html

  1. <html>
  2. <head>
  3. <title>級聯下拉框</title>
  4. <meta http-equiv=”Content-Type” content=”text/html;charset=UTF-8”>
  5. <link type=”text/css” rel=”stylesheet” href=”css/chainselect.css” />
  6. <script type=”text/javascript” src=”js/jquery.js”></script>
  7. <script type=”text/javascript” src=”js/ chainselect.js”></script>
  8. </head>
  9. <body>
  10. <div class=”loading”>
  11. <p><img src=”imags/data-loading.gif” alt=”數據轉載中” /></p>
  12. <p>數據轉載中……</p>
  13. </div>
  14. <div class=”car”>
  15. <span class=”carname”>
  16. 汽車廠商:
  17. <select>
  18. <option value=”” selected=”selected”>請選擇汽車廠商</option>
  19. <option value=”BMW”>寶馬</option>
  20. <option value=”Audi >奧迪</option>
  21. <option value=”VM >大眾</option>
  22. </select>
  23. <img src=images/pfeil.gif” alt=”有數據” />
  24. </span>
  25. <span class=”cartype”>
  26. 汽車類型:
  27. <select></select>
  28. <img src=”images/pfeil.gif” alt=”有數據” />
  29. </span>
  30. <span class=”whelltype”>
  31. 車輪類型:
  32. <select></select>
  33. </span>
  34. </div>
  35. <div class=”carimage”>
  36. <p> <img src=”images/img-loading.gif” alt=”圖片裝載中” class=”carloading” /></p>
  37. <p> <img src=”” alt=”汽車圖片” class=”carimg”/></p>
  38. </div>
  39. </body>
  40. </html>

chainselect.css

  1. .loading {
  2. width: 400px;
  3. //margin-left: auto;
  4. //margin-right:auto;
  5. margin: 0 auto;
  6. visibility: hidden;
  7. }
  8. .loading p {
  9. text-align: center;
  10. }
  11. p {
  12. margin: 0;
  13. }
  14. .car {
  15. width: 500px;
  16. margin: 0 atuo;
  17. text-align: center;
  18. }
  19. .carimage {
  20. text-align: center;
  21. }
  22. .cartype , .wheeltype , .carloading, .carimg, .car img {
  23. display: none;
  24. }

chainselect.js

  1. $(document).ready(function() {
  2. //找到三個下拉框
  3. var carnameSelect = $(“.carname”).children(“select”);
  4. var cartypeSelect + $(“.cartype”).children(“select”);
  5. var wheeltypeSelect = $(“.whelltype”).children(“select”);
  6. var carimg = $(“.carimg”);
  7. //給三個下拉框注冊事件
  8. carnameSelect.change(function(){
  9. //1. 需要獲得當前下拉框的值
  10. var carnameValue = $(this).val():
  11. wheeltypeSelect.parent().hide();
  12. carimg.hide().attr(“src”,””);
  13. //2. 如果值不為空,則將下拉框的值傳送給服務器
  14. if(carnameValue != “”) {
  15. if(!carnameSelect.data(carnameValue)) {
  16. $.post(“ChainSelect”,{keyward: carnameValue,type: top}, function(data){
  17. //2.1 接收服務器返回的汽車類型
  18. if(data.length != 0) {
  19. //2.2 解析汽車類型的數據,填充到汽車類型下拉框中
  20. cartypeSelect.html(“”);
  21. $(“<option value=’’>請選擇汽車類型</option>”).appendTo(cartypeSelect);
  22. for(var i = 0; i < data.length; i++) {
  23. $(“<option value=’” + data[i] + “’>” + data[i] + “</option>”).appendTo(cartypeSelect);
  24. cartypeSelect.parent().show(); //汽車類型的下拉框顯示出
  25. carnameSelect.next().show(); //第一個下拉框後面的指示圖片顯示出來
  26. }
  27. } else {
  28. //2.3 沒有任何汽車類型的數據
  29. cartypeSelect.parent().hide();
  30. carnameSelect.next().hide();
  31. }
  32. carnameSelect.data(carnameValue, data);
  33. }, ”json”)
  34. } else {
  35. var data = cartypeSelect.data(carnameValue);
  36. if(data.length != 0) {
  37. cartypeSelect.html(“”);
  38. $(“<option value=’’>請選擇汽車類型</option>”).appendTo(cartypeSelect);
  39. for(var i = 0; i < data.length; i++) {
  40. $(“<option value=’” + data[i] + “’>” + data[i] + “</option>”).appendTo(cartypeSelect);
  41. cartypeSelect.parent().show(); //汽車類型的下拉框顯示出
  42. carnameSelect.next().show(); //第一個下拉框後面的指示圖片顯示出來
  43. }
  44. } else {
  45. //2.3 沒有任何汽車類型的數據
  46. cartypeSelect.parent().hide();
  47. carnameSelect.next().hide();
  48. }
  49. }
  50. } else {
  51. //3. 如果值為空,那麼第二個下拉框所在span要隱藏起來,第一個下拉框後面的指示圖片也要隱藏
  52. cartypeSelect.parent().hide();
  53. carnameSelect.next().hide();
  54. }
  55. });
  56. cartypeSelect.change(function(){
  57. //1. 需要獲得當前下拉框的值
  58. var cartypeValue = $(this).val():
  59. carimg.hide().attr(“src”,””);;
  60. //2. 如果值不為空,則將下拉框的值傳送給服務器
  61. if(cartypeValue != “”) {
  62. if(!cartypeSelect.data(cartypeValue)) {
  63. $.post(“ChainSelect”,{keyward: cartypeValue,type: sub}, function(data){
  64. //2.1 接收服務器返回的汽車類型
  65. if(data.length != 0) {
  66. //2.2 解析汽車類型的數據,填充到車輪類型下拉框中
  67. carwheelSelect.html(“”);
  68. $(“<option value=’’>請選擇車輪類型</option>”).appendTo(wheeltypeSelect);
  69. for(var i = 0; i < data.length; i++) {
  70. $(“<option value=’” + data[i] + “’>” + data[i] + “</option>”)
  71. .appendTo(wheeltypeSelect);
  72. wheeltypeSelect.parent().show(); //車輪類型的下拉框顯示出
  73. cartypeSelect.next().show(); //第二個下拉框後面的指示圖片顯示出來
  74. }
  75. } else {
  76. //2.3 沒有任何汽車類型的數據
  77. wheeltypeSelect.parent().hide();
  78. cartypeSelect.next().hide();
  79. }
  80. cartypeSelect.data(cartypeValue,data);
  81. }, ”json”)
  82. }else {
  83. var data = cartypeSelect.data(cartypeValue);
  84. if(data.length != 0) {
  85. //2.2 解析汽車類型的數據,填充到車輪類型下拉框中
  86. carwheelSelect.html(“”);
  87. $(“<option value=’’>請選擇車輪類型</option>”).appendTo(wheeltypeSelect);
  88. for(var i = 0; i < data.length; i++) {
  89. $(“<option value=’” + data[i] + “’>” + data[i] + “</option>”)
  90. .appendTo(wheeltypeSelect);
  91. wheeltypeSelect.parent().show(); //車輪類型的下拉框顯示出
  92. cartypeSelect.next().show(); //第二個下拉框後面的指示圖片顯示出來
  93. }
  94. } else {
  95. //2.3 沒有任何汽車類型的數據
  96. wheeltypeSelect.parent().hide();
  97. cartypeSelect.next().hide();
  98. }
  99. }
  100. } else {
  101. //3. 如果值為空,那麼第三個下拉框所在span要隱藏起來,第一個下拉框後面的指示圖片也要隱藏
  102. wheeltypeSelect.parent().hide();
  103. cartypeSelect.next().hide();
  104. }
  105. });
  106. wheeltypeSelect.change(function(){
  107. //1. 獲取車輪類型
  108. var wheeltypeValue = $(this).val();
  109. //2. 根據汽車廠商名稱,汽車類型和車輪類型的到汽車圖片的文件名
  110. var carnameValue = carnameSelect.val();
  111. var cartypeValue = cartypeSelect.val();
  112. var carimgname = carnameValue + “_” + cartypeValue + “_” + wheeltypeValue + “.jpg”;
  113. carimg.hide();
  114. $(“.carloading”).show(); //顯示loading的圖片
  115. //通過javascript中的Image對象預裝載圖片
  116. var cacheimg = new Image();
  117. $(cacheimg).attr(“src”,”images/” + carimgname).load(function(){
  118. $(“.carloading”).hide(); //隱藏loading圖片
  119. carimg.attr(“src”,”images/” + carimgname).show();
  120. });
  121. //3. 修改汽車圖片節點的src的值,讓汽車圖片顯示
  122. //carimg.attr(“src”,”images/” + carimgname).show();
  123. });
  124. //給數據裝載中的節點定義ajax事件,實現動畫提示效果
  125. $(“.loading”).ajaxStart(function(){
  126. $(this).css(“visibility”,”visible”);
  127. $(this).animate({
  128. opacity: 0;
  129. },0);
  130. }).ajaxStop(function(){
  131. //$(this).fadeOut(500);
  132. $(this).animate({
  133. opacity: 0;
  134. },500);
  135. });
  136. });
Copyright © Linux教程網 All Rights Reserved