我的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>
答案 0 :(得分:1)
在此我们希望在页面提交之间保留选择框选择。为此,我们可以使用PHP。
每当我们向PHP页面提交包含表单字段的任何表单时,我们都可以访问PHP代码中实际选择的内容。
因此,在我们的例子中,要访问PHP中选定的表单字段值,我们需要使用以下代码。
$programSelect = $_POST['programSelect'];
$languageSelect = $_POST['languageSelect'];
因此,我们在PHP中提供了这些值。
当我们在加载页面后需要这些值并填充选择框时。
由于JavaScript位于同一页面,因此我们在JavaScript中添加以下两行。
var programSelect = <?php echo $programSelect; ?>,
languageSelect = <?php echo $languageSelect; ?>;
在上面两行中,我们将选定的值从PHP传递给JavaScript。
现在,在从XML填充数据之后,现在我们需要在选择表单字段中选择选项。由于我们已经使用简单的jQuery在JavaScript中选择了选项,因此我们可以选择它们。例如:
$("#programList option[value='" + programSelect + "']").attr('selected', true);
$("#languageList option[value='" + languageSelect + "']").attr('selected', true);
这只是为了提出一个想法。