【发布时间】:2015-08-19 12:44:07
【问题描述】:
我有一个包含 2 个下拉列表 + 1 个隐藏字段的表单。
第一个下拉列表是城市。
第二个下拉列表是基于上面所选城市的地区值。
隐藏字段将根据使用 Jquery 的特定区域值显示或关闭。
我的问题是:
在城市下拉列表中,我有 onchange ajax 函数,它有助于在区域下拉列表中生成值。 However, When a particular district value is selected, the hidden field won't show up.
这是我的 html 表单:
<form>
<select id='main-cat' name='maincat' onchange="sortSubcat(this.value)"/>
<option value="">Please select one category</option>
<option value="City 1">City 1</option>
<option value="City 2">City 2</option>
<option value="City 3">City 3</option>
</select>
<select id='subcat' name='subcat'>
<option value=''>Please select a district</option>
</select>
<div id='morefield' style='display:none'>
<input type='text' name='option1'/>
</div>
</form>
这里是 onchange ajax 函数:
function sortSubcat(str)
{
if (str=="")
{
document.getElementById("subcat").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("subcat").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","/member/sortsubcat.php?q="+str,true);
xmlhttp.send();
}
这是我的 Jquery 代码部分,用于在选择特定区域值时触发隐藏字段:
$("#subcat").change(function(){
if ($(this).val() == 'district a'){
$("#morefield").css("display","block");
}else{
$("#morefield").hide();
}
});
这是我的 php 文件:
<?php
require_once("../configs/dbconnect.php");
if (!empty($_GET['q'])){
$q = basename($_GET['q']);
$sql="SELECT * FROM subcat WHERE maincat=:q";
$result = $conn->prepare($sql);
$result->bindParam(':q', $q);
$result->execute();
echo "<option value=''>Please select a district</option>";
foreach($result as $row)
{
echo "<option value='$row[name]'>$row[name]</option>";
}
}
else{
echo "<option value=''>Please select a district</option>";
}
$conn=null;
?>
【问题讨论】:
-
我们可以举一个
sortsubcat.php文件返回的例子吗? -
您的代码按照您的描述工作。如果页面上也有 CSS,则可能需要查看它或检查该区域中
option元素的value属性select -
@Deryck:这种编码是有效的。但是,在我选择了一个城市后,我看到下拉列表中出现了地区列表,我查看了页面源,那里没有显示选项列表?我想,这可能是选择特定城市值的问题,隐藏字段会按预期显示。但我不知道如何克服这个问题。
-
当您“查看源代码”时,它会向您显示浏览器从服务器获得的初始代码。因此,任何动态创建或更改的元素都不会出现。您可以使用“检查元素”查看这些
-
@Deryck:您认为这可能是 Jquery 无法从区域下拉列表中获取所选值的问题吗?你有什么建议吗?