自动选择下拉菜单
问题描述:
我有一个类别下拉菜单。当用户从下拉列表中选择任何类别,然后会出现第二个下拉列表。它将显示与类别相关的产品列表(通过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;
});
答
你可以用下面的方法做到这一点;
<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 =“”;'在page.php文件中 – 2012-04-22 13:16:27
+0
你可以在body onload上放一个javascript函数。
这个函数会调用你上面用currentProduct参数写的实现。或者像你说的,你可以声明全局javascript变量currentProduct =“”;在page.php的顶部,你可以在你的后续js文件中使用 – 2012-04-22 13:19:35
@Coder类别和产品的下拉列表中应自动选择时page.php文件重定向到'page.php文件?类别= X&产物= x' – 2012-04-22 13:10:15
自动选择以哪个值? – Coder 2012-04-22 13:11:27
你是指什么价值?值可以取决于用户从下拉列表中选择的内容。例如,您从类别中选择“Apple”,然后通过ajax显示第二个下拉列表。从产品下拉列表中选择“Ipad”,然后重定向到“页面”。 php?category = x&product = x' - 它应该记住您选择的内容 – 2012-04-22 13:14:27