這是我昨天遇到的一個問題的延續,所以如果它看起來很熟悉,那就是爲什麼:)這是一個不同的問題!dijit.form.Select重新出現無人填充?
因此,我有另一個dijit.form.Select最初在頁面上創建像這樣;
<c:set var="clazzId" value="${verification.clazz.id}" />
<div id="clazzOptions">
<select id="clazz" name="clazz" style="width:22em" dojoType="dijit.form.Select" maxHeight="140">
<option value="-1" label=" " />
<c:forEach items="${requestScope.clazzes}" var="clazzItem">
<c:choose>
<c:when test="${clazzId eq clazzItem.id}">
<option value="${clazzItem.id}" selected = "true">${clazzItem.name}</option>
</c:when>
<c:otherwise>
<option value="${clazzItem.id}">${clazzItem.name}</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
</div>
然後我有一些JavaScript,我試圖用交換依賴於從不同下拉(這裏不可見)選擇的值格「clazzOptions」的內容。如果它有一個特定的值,用一個文本信息替換div,如果它的任何其他值,重新顯示原始的dijit.form.Select;
<script type="text/javascript">
var classDropDown;
var classPhDMessage = "PhD's do not require a Class or Grade";
dojo.addOnLoad(function() {
classDropDown = dojo.byId('clazzOptions').innerHTML;
});
function checkForPHD() {
var awardOption = dijit.byId('qualification').attr('displayedValue');
if(awardOption == "PhD"){
dojo.byId('clazzOptions').innerHTML = classPhDMessage;
} else {
dojo.byId('clazzOptions').innerHTML = classDropDown;
}
}
</script>
正如你可以看到我試圖捕捉innerHTMLof股利,因爲它是在頁面加載時,然後根據在其他下拉(不可見)選擇的值預定義的消息之間的變化和捕獲的div內容。
問題是,原始div內容已被替換爲消息,然後選擇再次改變離開「PhD」並且原始div innerHTML被放回到div中後,dijit.form.Select將重新放回到div中,出現,但是完全是空的,事實上根本不可用?如果我刪除了dijit.form.Select dojoType,並將其作爲一個正常選擇,這整個操作完美的作品,但我有點需要它是一個dijit.form.Select。
爲什麼dijit.form.Select不能在這種情況下工作,而正常的選擇呢?
我剛剛跟選項1一起到最後,保持簡單愚蠢! – 2011-03-07 10:46:29