我的JavaScript不是很好,但我試圖學習。現在在這一天,請求幫助,但需要提示:)Javascript動態下拉菜單 - 在頁面重新加載時反應?
我有一個下拉菜單,有兩個SELECT下拉菜單。
<select name="programSelect" onchange="setLanguage()" id="programList">
</select>
<br>
<select name="languageSelect" id="languageList">
</select>
Javascript(以下代碼)從XML創建下拉列表。它很棒!
我現在試圖完成一些簡單的事情,從一個項目開始。
當我提交表單時,它通過POST將變量傳遞到同一頁面。搜索發生,下拉菜單重新出現。
由於第一個下拉列表的onClick使第二個下拉列表填充,因此當頁面重新加載dropdwons時沒有填充。我做了一個不太好的PHP破解,但並沒有真正實現我想要的。
理想情況下,當頁面重新加載時,我希望第一個下拉菜單顯示所有選項(使用所選項目SELECTED),第二個下拉菜單使用所選項目SELECTED填充。
下面的代碼。我不確定我想要做的事情是簡單的還是不行...但是要提前感謝。
這個JavaScript在我的頁腳,它加載了一個簡單的XML文檔,已經建立了下拉層次結構。 JavaScript的第一次,然後XML:
<script type="text/javascript" language="javascript">
$(document).ready(init);
//var mainXML;
var curProgram="";
var curLanguage="";
function init(){
// $("#languageList").hide(); //Dont Hide the level 2, or level 3
loadXML("/xml/dropdownSelections.xml");
}
function loadXML(_xml){
$.ajax({
type: "GET",
url: _xml,
dataType: "xml",
success: setXML
}) // close ajax
}
function setXML(_xml){
var _idx=0;
var curOption;
var curCountry = $(_xml).find('country');
$(curCountry).each(function(i){
var country = $(this);
curOption=$("<option value='" + $(country).attr('program') + "'>" + country.children('label').text() + "</option>")
$(curOption).appendTo($('#programList'))
})
}
function setLanguage(){
var curCountry = $('#programList').children(':selected').data('country')
$('#languageList').html(""); // reset the languages list
var curLang = $(curCountry).find('language');
$('#linkURL').html("");
if (curLang.length>1){
curLang.each(function(i){
var lang = $(this);
var langCode=lang.attr('langCode');
if (i==0){
curOption="<option value='null'>--Select Issue--</option><option value='" + langCode + "'>" + lang.text() + "</option>";
}else{
curOption+="<option value='" + langCode + "'>" + lang.text() + "</option>"
}
});
$(curOption).appendTo($('#languageList'));
$('#languageList').show()
}else if (curCountry==null){
// $('#languageList').hide();
curOption="<option value='null'>--Select Issue--</option>";
$(curOption).appendTo($('#languageList'));
}else{
$('#languageList').hide();
gotoPage($(curCountry).find('language').attr('langCode'))
}
}
</script>
和XML(只是它的第一部分,有模仿這種結構的其他部分):我們要堅持之間選擇框中選擇
<?xml version="1.0" encoding="UTF-8"?>
<countries>
<country program="read-and-learn">
<label>Read and Learn</label>
<languages>
<language langCode="italian">Italian</language>
<language langCode="french">French</language>
<language langCode="spanish">Spanish</language>
<language langCode="german">German</language>
<language langCode="japanese">Japanese</language>
<language langCode="russian">Russian</language>
<language langCode="dutch">Dutch</language>
</languages>
</country>
啊,這是有道理的。感謝您的詳細回覆,現在就試用它。 – 2013-03-08 09:07:32
我想我需要與它合作。上面的理論很簡單,但我在實施時必須做到錯誤。我將與它一起工作,並會在/如果發回我的結果和工作代碼。謝謝你的幫助! – 2013-03-08 09:24:50
我嘗試了以上,但必須在我的代碼中犯了一個錯誤。上面的答案正是我正在尋找的,並且應該適合其他人想要做我正在做的事情。謝謝Vanga! – 2013-03-13 23:48:12