如何加载使用下拉列表生成的新页面更改

how to load new page that being generated with dropdown list onchange?

本文关键字:新页面 下拉列表 何加载 加载      更新时间:2023-09-26

我有以下代码。 我需要它打开此页面bill_report.asp?q=yr在用户选择此生成的年份之一后选择。尝试谷歌很多,但找不到适合我的代码。所以你能帮帮我吗?谢谢

   <select name="inyear" id="inyear" onChange="??">
     <option value="0" <%=yrSelect%>>SELECT YEAR</option>
     <option value="0" <%=yrSelect%>>ALL YEARS</option>  
        <%
        dim yearCount, YearStart, yrValue, z
        YearStart = 2012
        yearCount = 0
        z = current_year - YearStart                                 
        do while not yearCount > z
           yrValue = current_year - yearCount
        %>    
      <option value="<%=yrValue%>" <%=yrSelect%>><%=yrValue%></option>                                   
         <%
            yearCount = yearCount + 1
            loop
         %>
   </select> 

你把它复杂化得太多了。您所需要的只是这样的代码:

<form action="<%=Request.ServerVariables("Script_Name")%>" method="GET">
    <select name="inyear" id="inyear" onChange="this.form.submit();">
        <option value="-1" <%=CheckSelected(-1)%>>SELECT YEAR</option>
        <option value="0" <%=CheckSelected(0)%>>ALL YEARS</option>  
        <%=GenerateYears(2012)%>
    </select>
</form>

ASP 代码应该是:

<%
Function CheckSelected(yearValue)
    If Request("inyear")=CStr(yearValue) Then
        CheckSelected = "selected=""selected"""
    Else  
        CheckSelected = ""
    End If
End Function
Function GenerateYears(YearStart)
    Dim arrOptions, currentYear, x
    ReDim arrOptions(-1)
    currentYear = Year(Now())
    For x=YearStart To currentYear
        ReDim Preserve arrOptions(UBound(arrOptions) + 1)
        arrOptions(UBound(arrOptions)) = "<option value=""" & x & """ " & CheckSelected(x) &">" & x & "</option>"
    Next
    GenerateYears = Join(arrOptions, VBCrLf)
    Erase arrOptions
End Function
%>

好的,我的理解是,这个ASP代码将生成一个选择选项块,如下所示或类似。你要做的是,在选择一个选项后,你想转到另一个ASP页面来处理传递变量q=yrSearch和另一个变量的表单,即您选择的年份。对吗?

<select name="" id="">
    <option value="">2014</option>
    <option value="">2013</option>
    <option value="">2012</option>
    <option value="">2011</option>
    <option value="">2010</option>
    <option value="">2009</option>
</select>

我以前从未使用过ASP,但我认为在通过URL传递变量时,它可能或多或少地像PHP一样运行。在 HTML 表单块中,您始终生成如下结构:

<form action="bill_report.asp" method="get" id="myForm">
<input type="hidden" name="q" value="yrSelect">
<select name="name_of_select" value="" onChange="change_function(this.selectedIndex)">
    <option value="2014">2014</option>
    <option value="2013">2013</option>
    <option value="2012">2012</option>
    <option value="2011">2011</option>
    <option value="2010">2010</option>
    <option value="2009">2009</option>
</select>

如果您查看 W3CSchools (http://www.w3schools.com/jsref/dom_obj_select.asp( 的网页,您会发现您也可以修改 SELECT 块的属性值。

你唯一要做的就是,当你选择一个选项时,让javascript获取所选选项的值,并在整个SELECT块中设置它。因此,当您提交时,select 变量也将传递给 URL。选择完成后,您必须调用 FORM 的 submit(( 方法,因此表单与值一起提交。

如果你想传递变量,你已经知道了。就像你之前指出的:q=yrSelect,我会使用一个输入隐藏表单项,这样你就可以安全快速地传递变量。

<script type="text/javascript">
var form = document.getElementById('myForm');
var select = document.body.querySelector('select');
var options = document.body.querySelectorAll('option');
function change_function (index) {
  select.value = options[index].value;
  form.submit();
}
</script>