2012-04-22 167 views
0

我有一個類別下拉菜單。當用戶從下拉列表中選擇任何類別,然後會出現第二個下拉列表。它將顯示與類別相關的產品列表(通過jQuery ajax)。自動選擇下拉菜單

當用戶單擊從產品下拉列表中的任何條目會重定向到同一頁面,但與GET查詢..

例如:

page.php?category=3&product=6 

當用戶在該網頁上,如何自動選擇類別下拉菜單和產品下拉菜單?

<label>Category</label> 
    <select id="category"> 
     <option value="0">Please select a category</option> 
     <?php 
      $SQL = "SELECT * FROM category"; 
      $query = mysql_query($SQL); 
      while ($cat = mysql_fetch_assoc($query)) { 
       echo "<option value='{$cat['id']}'>{$cat['name']}</option>"; 
      } 
     ?> 
    </select> 
    <select id="product"> </select> 

    $("#category").change(function() { 
     var category = $(this).val(); 
     $('#product').append($("<option></option>").attr("value","0").text("Please Select Product")); 
     $.getJSON(host + "/ajax_select_product.php?categoryid=" + category, function(data) { 
      $.each (data, function (index, element) { 
       $('#product').append($("<option></option>").attr("value",data[index].id).text(data[index].name)); 
      }); 
     }); 
    }); 

​ 
    $("#product").change(function() { 
     var product = $("#product :selected").val() 
     var category = $("#category :selected").val() 
     window.location = "page.php?category=" + category + "?product=" + product; 
    }); 
+0

@Coder類別和產品的下拉列表中應自動選擇時page.php文件重定向到'page.php文件?類別= X&產物= x' – 2012-04-22 13:10:15

+0

自動選擇以哪個值? – Coder 2012-04-22 13:11:27

+0

你是指什麼價值?值可以取決於用戶從下拉列表中選擇的內容。例如,您從類別中選擇「Apple」,然後通過ajax顯示第二個下拉列表。從產品下拉列表中選擇「Ipad」,然後重定向到「頁面」。 php?category = x&product = x' - 它應該記住您選擇的內容 – 2012-04-22 13:14:27

回答

1

你可以用下面的方法做到這一點;

<label>Category</label> 
    <select id="category"> 
     <option value="0">Please select a category</option> 
     <?php 
     $currentCategory = 0; 
     $curretProduct =0; 

     if (!empty($_GET['category'])) { 
      $currentCategory = $_GET['category']; 
     } 

     if (!empty($_GET['product'])) { 
      $currentProduct = $_GET['product']; 
     } 
      $SQL = "SELECT * FROM category"; 
      $query = mysql_query($SQL); 
      while ($cat = mysql_fetch_assoc($query)) { 
       if ($cat['id'] == $currentCategory) { 
       echo "<option value='{$cat['id']}' selected=\"selected\">{$cat['name']}</option>"; 
       } else { 
       echo "<option value='{$cat['id']}'>{$cat['name']}</option>"; 
       } 
      } 
     ?> 
    </select> 
    <select id="product"> </select> 
    var currentProduct = "<?php echo $currentProduct; ?>"; 
    $("#category").change(function() { 
     var category = $(this).val(); 
     $('#product').append($("<option></option>").attr("value","0").text("Please Select Product")); 
     $.getJSON(host + "/ajax_select_product.php?categoryid=" + category, function(data) { 
      $.each (data, function (index, element) { 
       if (data[index].id == currentProduct) { 
        $('#product').append($("<option></option>").attr("value",data[index].id).attr("selected", "selected").text(data[index].name)); 
       } else { 
        $('#product').append($("<option></option>").attr("value",data[index].id).text(data[index].name)); 
       } 

      }); 
     }); 
    }); 

​ 
    $("#product").change(function() { 
     var product = $("#product :selected").text() 
     var category = $("#category :selected").text() 
     window.location = "page.php?category=" + category + "?product=" + product; 
    }); 
+0

您必須檢查產品和類別的空控制。您可以通過使用php值來設置javascript變量。之後,您可以在javascript端的產品迭代中檢查它。 – 2012-04-22 13:09:25

+0

謝謝你的例子。 Javascript代碼將在單獨的文件中。我想我需要把'var currentProduct =「<?php echo $ currentProduct;?>」;'在page.php文件中 – 2012-04-22 13:16:27

+0

你可以在body onload上放一個javascript函數。 這個函數會調用你上面用currentProduct參數寫的實現。或者像你說的,你可以聲明全局javascript變量currentProduct =「<?php echo $ currentProduct;?>」;在page.php的頂部,你可以在你的後續js文件中使用 – 2012-04-22 13:19:35