私のアプリケーションには 2 つのドロップダウンがあります。最初のドロップダウン (機関の種類を選択) に、2 番目のドロップダウンにデータを入力するための javascript 関数 (これは ajax 呼び出しを行います) を呼び出す onchange イベントを添付しました (機関名を選択してください)。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();
}
問題は、最初のドロップ ダウンから 1 つのオプション (大学など) を選択すると、2 番目のドロップ ダウン リストがまだ空であることです (ajax によって返されたすべての大学のリストが表示されるのではなく)。
ただし、2 番目のドロップダウンでネイティブの select タグを使用すると、すべて正常に動作します (select オブジェクトには、すべての大学のリストが効果的に取り込まれます)。
これは、ネイティブの select 要素を使用したコードです。
<label for="nameHighInst">Name of institution: </label>
<select id="nameHighInst" name="nameHighInst">
<option value="" selected='selected'>-- select institution --</option>
</select>
dijit/form/FilteringSelect ウィジェットではなく、ネイティブの select 要素で機能する理由を教えてください。道場初心者です。直し方も教えていただきたいです。ネイティブの select は機能しますが、dojo ウィジェットを発見したので、dojo ウィジェットを使用することを好みます。
前もって感謝します。