2012-04-22 144 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