Javascript:在搜索上维持ComboBox的选定索引

时间:2013-05-30 12:21:00

标签: javascript

我的javascript有问题。首先,这是我的代码分区:

<select class="inputTxt" style="width: 120px;" id="yearCombo" name="yearCombo">
 <option value="0">2013</option>
 <option value="1">2012</option>
 <option value="2">2011</option>                
</select>

function searchClicked() {
    var operationField = document.getElementById("<%=FeedbackReportCtrl.PARAM_OPERATION%>");
    operationField.value = "<%=FeedbackReportCtrl.OPERATION_SEARCH%>";  
    var yearFilter = document.getElementById("<%=FeedbackReportCtrl.PARAM_YEARFILTER%>");
    yearFilter.value = document.getElementById("yearCombo").options[document.getElementById("yearCombo").selectedIndex].text;
    var mainForm = document.getElementById("main"); 
    mainForm.submit();  
}

以下是出了什么问题; 例如,当我从组合框中选择2011年然后点击搜索按钮时,它会给我带来所需的结果;但是,该框的选定索引将返回到2013年。如何在搜索功能之后维持我的选择?

2 个答案:

答案 0 :(得分:1)

你遇到的问题不是javascript问题。当您提交表单时,您刷新整个页面,删除任何客户端(用户或javascript)调整。

它应该由生成您发布表单的页面的php / java设置,根据您刚刚发布的值设置selected =“selected”或相关。

在php中,这将是

if($_POST['year'] == '2013') echo ' selected="selected"';

在java或jsp中,有类似的方法。 Javascript本身可能会做同样的事情。

答案 1 :(得分:0)

提交表单会刷新页面(除非通过AJAX完成),因此返回默认选择的值,即第一个。

为了解决这个问题,你需要发送所选年份的表格 - 假设你是自我提交的 - 并明确将今年标记为选定的选项。

在PHP中您的代码将类似于:

 <?php $year = $_POST['year']; ?>

<select class="inputTxt" style="width: 120px;" id="yearCombo" name="yearCombo">

<?php for ($i=2013;$i>2010;$i--): ?>

 <option value="<?php echo $i; ?>" <?php if ($year==$i) echo "selected"; ?> >
 <?php echo $i; ?>
 </option>

<?php endfor; ?>

</select>