同样的,如果有一张修改页面,从数据库中读出的值可以让第一级下拉框中相应的值被选中,但是第二级如何让它被选中呢?而且现在的情况是如果第一级不重新操作,第二级中是没有数据可以选择的。
请各位指教,下面是我用的代码:
<?
$sql="select * from suburb order by name asc";
$query=mysql_query($sql, $DB->link);
?>
<script language = "JavaScript">
var onecount;
onecount = 0;
subcat = new Array();
<?
$count=0;
while($rs=mysql_fetch_array($query)){
?>
subcat[<?=$count;?>] = new Array("<?=$rs['id'];?>","<?=$rs['cityid'];?>","<?=$rs['name'];?>");
<?
$count++;
}
?>
onecount=<?=$count?>;
function getCity(cityid)
{
document.form1.ADDTHREE.length = 0;
var cityid=cityid;
var i;
document.form1.ADDTHREE.options[0] = new Option('Select','');
for (i=0;i < onecount; i++)
{
if (subcat[i][1] == cityid)
{
document.form1.ADDTHREE.options[document.form1.ADDTHREE.length] = new Option(subcat[i][2], subcat[i][2]);
}
}
}
</script>
<select name="ADDTHREE" class="style10" id="ADDTHREE">
<option value="0">Select</option>
</select> <FONT size=2 class="style18">地區</FONT>
<select name="ADDFOUR" class="style10" id="ADDFOUR" onChange="getCity(document.form1.ADDFOUR.options[document.form1.ADDFOUR.selectedIndex].id);">
<option value="0">Select</option>
<?
$sql1= "select * from city";
$query=mysql_query($sql1, $DB->link);
$a=mysql_num_rows($query);
while($rs1=mysql_fetch_array($query)){
?>
<option id="<?=$rs1['id'];?>" value="<?=$rs1['name'];?>"><?=$rs1['name'];?></option>
<? }?>
</select><FONT size=2 class="style18">地域</FONT>
14 个解决方案
#1
加上一个隐藏域,里面就是二级的菜单的值。
然后根据隐藏域用JS控制一下,就是用onchange()对第一级进行一下类似于鼠标选中的操作。
然后根据隐藏域用JS控制一下,就是用onchange()对第一级进行一下类似于鼠标选中的操作。
#2
能说的稍微具体一点吗?对这个还没有很深的概念
#3
<input name="twodata" type="hidden" value="" 这里写onchange?>
#4
你这个做的不好,保存的是name,而判断是用id,修改的时候从数据库中取出name时,是没有id的,所以你要么根据name判断,要么不得不在循环一次options得到对应的id,
var defaultCity = '<?php echo $rs['twodata']?>';
window.onload=function(){
getCity(defaultCity); //这里由于只能是name,所以判断的时候应该用name
}
var defaultCity = '<?php echo $rs['twodata']?>';
window.onload=function(){
getCity(defaultCity); //这里由于只能是name,所以判断的时候应该用name
}
#5
明白你的意思,是说function getCity(cityid) 这里我用的cityid,其实这个cityid是第一级下拉框中的值对应的id,而不是二级下拉框里面的值,这样二级下拉框的默认值还是没有被设定。
#6
<select name="Ftopicid" id="Ftopicid" onchange="这里你操作二级">
<option value="">Choose Directory</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<input type="hidden" id="tempdir" value="{Ftopicid}">
<script language="javascript">
var td = document.all.tempdir.value;
if( td ) {
document.all.Ftopicid.value = td;
document.all.onchange();
}
</script>
<option value="">Choose Directory</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<input type="hidden" id="tempdir" value="{Ftopicid}">
<script language="javascript">
var td = document.all.tempdir.value;
if( td ) {
document.all.Ftopicid.value = td;
document.all.onchange();
}
</script>
#7
If you use ajax to do this, you will find it's good.
#8
建议去查看www.pcauto.com.cn上面的汽车分类的联动,做的非常好,简单的js+数据库查询就完成了.支持无限级别的联动..
#9
#10
ajax这种有参考吗?能够满足我的需求?
#11
现在出现了新的问题。。。
<input type="hidden" id="tempdir" value="">
<script language="javascript">
function get_value()
{
document.form1.tempdir.value = document.form1.ADDFOUR.options[document.form1.ADDFOUR.selectedIndex].id;
}
</script>
<script language="javascript">
var td = document.form1.tempdir.value;
if( td ) {
document.form1.ADDFOUR.value = td;
document.form1.onchange();
}
</script>
增加了一个隐藏域之后,的确可以记录了,但是二级菜单始终报错,没有值,我想是document.form1.onchange();这样之后,导致了系统认为二级菜单没有选中。
<input type="hidden" id="tempdir" value="">
<script language="javascript">
function get_value()
{
document.form1.tempdir.value = document.form1.ADDFOUR.options[document.form1.ADDFOUR.selectedIndex].id;
}
</script>
<script language="javascript">
var td = document.form1.tempdir.value;
if( td ) {
document.form1.ADDFOUR.value = td;
document.form1.onchange();
}
</script>
增加了一个隐藏域之后,的确可以记录了,但是二级菜单始终报错,没有值,我想是document.form1.onchange();这样之后,导致了系统认为二级菜单没有选中。
#12
顶顶
#13
搂主,能不能问下你的联动是如何实现的,用到了ajax吗?
#14
DING
#1
加上一个隐藏域,里面就是二级的菜单的值。
然后根据隐藏域用JS控制一下,就是用onchange()对第一级进行一下类似于鼠标选中的操作。
然后根据隐藏域用JS控制一下,就是用onchange()对第一级进行一下类似于鼠标选中的操作。
#2
能说的稍微具体一点吗?对这个还没有很深的概念
#3
<input name="twodata" type="hidden" value="" 这里写onchange?>
#4
你这个做的不好,保存的是name,而判断是用id,修改的时候从数据库中取出name时,是没有id的,所以你要么根据name判断,要么不得不在循环一次options得到对应的id,
var defaultCity = '<?php echo $rs['twodata']?>';
window.onload=function(){
getCity(defaultCity); //这里由于只能是name,所以判断的时候应该用name
}
var defaultCity = '<?php echo $rs['twodata']?>';
window.onload=function(){
getCity(defaultCity); //这里由于只能是name,所以判断的时候应该用name
}
#5
明白你的意思,是说function getCity(cityid) 这里我用的cityid,其实这个cityid是第一级下拉框中的值对应的id,而不是二级下拉框里面的值,这样二级下拉框的默认值还是没有被设定。
#6
<select name="Ftopicid" id="Ftopicid" onchange="这里你操作二级">
<option value="">Choose Directory</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<input type="hidden" id="tempdir" value="{Ftopicid}">
<script language="javascript">
var td = document.all.tempdir.value;
if( td ) {
document.all.Ftopicid.value = td;
document.all.onchange();
}
</script>
<option value="">Choose Directory</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<input type="hidden" id="tempdir" value="{Ftopicid}">
<script language="javascript">
var td = document.all.tempdir.value;
if( td ) {
document.all.Ftopicid.value = td;
document.all.onchange();
}
</script>
#7
If you use ajax to do this, you will find it's good.
#8
建议去查看www.pcauto.com.cn上面的汽车分类的联动,做的非常好,简单的js+数据库查询就完成了.支持无限级别的联动..
#9
#10
ajax这种有参考吗?能够满足我的需求?
#11
现在出现了新的问题。。。
<input type="hidden" id="tempdir" value="">
<script language="javascript">
function get_value()
{
document.form1.tempdir.value = document.form1.ADDFOUR.options[document.form1.ADDFOUR.selectedIndex].id;
}
</script>
<script language="javascript">
var td = document.form1.tempdir.value;
if( td ) {
document.form1.ADDFOUR.value = td;
document.form1.onchange();
}
</script>
增加了一个隐藏域之后,的确可以记录了,但是二级菜单始终报错,没有值,我想是document.form1.onchange();这样之后,导致了系统认为二级菜单没有选中。
<input type="hidden" id="tempdir" value="">
<script language="javascript">
function get_value()
{
document.form1.tempdir.value = document.form1.ADDFOUR.options[document.form1.ADDFOUR.selectedIndex].id;
}
</script>
<script language="javascript">
var td = document.form1.tempdir.value;
if( td ) {
document.form1.ADDFOUR.value = td;
document.form1.onchange();
}
</script>
增加了一个隐藏域之后,的确可以记录了,但是二级菜单始终报错,没有值,我想是document.form1.onchange();这样之后,导致了系统认为二级菜单没有选中。
#12
顶顶
#13
搂主,能不能问下你的联动是如何实现的,用到了ajax吗?
#14
DING