我的应用程序中有两个下拉菜单:在第一个下拉菜单(选择机构类型)中,我附加了一个 onchange 事件,该事件调用一个 javascript 函数(这个函数进行 ajax 调用),用于填充第二个下拉菜单(选择机构名称)。HTML 代码如下所示:
<label for="typeHighInst">Type of institution: </label>
<select data-dojo-type="dijit/form/FilteringSelect" data-dojo-id="typeHighInst" id="typeHighInst" name="typeHighInst" onChange="getInstitution(this.value)">
<option value="" selected='selected'>-- select institution type -- </option>
<?php foreach($InstitutionType as $institutiontype): ?>
<option value="<?php echo $institutiontype['TypeID']; ?>"><?php echo $institutiontype['Description']; ?>
</option>
<?php endforeach; ?>
</select>
<label for="nameHighInst">Name of institution: </label>
<select data-dojo-type="dijit/form/Select" data-dojo-id="nameHighInst" id="nameHighInst" name="nameHighInst">
<option value="" selected='selected'>-- select institution --</option>
</select>
javascript 代码如下所示:
function getInstitution(str)
{
var xmlhttp;
if (str=="")
{
document.getElementById("nameHighInst").innerHTML="<option value='' selected='selected'>-- select institution --</option>";
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)
{
//alert(xmlhttp.responseText);
document.getElementById("nameHighInst").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","includes/getInstitution.php?typeHighInst="+str,true);
xmlhttp.send();
}
问题是当您从第一个下拉列表中选择一个选项(例如大学)时,第二个下拉列表仍然是空的(而不是显示由 ajax 返回的所有大学的列表)。
但是,当我在第二个下拉列表中使用本机选择标签时,一切正常(选择对象有效地填充了所有大学的列表)。
这是使用本机选择元素的代码:
<label for="nameHighInst">Name of institution: </label>
<select id="nameHighInst" name="nameHighInst">
<option value="" selected='selected'>-- select institution --</option>
</select>
有人可以告诉我为什么它适用于本机选择元素而不适用于 dijit/form/FilteringSelect 小部件吗?我是道场新手。我也想知道怎么解决。虽然本机选择有效,但我更喜欢使用 dojo 小部件,因为我发现了它们。
提前致谢。