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

时间:2014-12-13 10:30:55

标签: javascript asp-classic

我有以下代码..我需要它在用户选择此生成年份之一后打开此页 bill_report.asp?q = yrSelect 。尝试google很多,但找不到适合我的代码。那么请你帮帮我吧。非常感谢你

   <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> 

2 个答案:

答案 0 :(得分:0)

你过度复杂化了。您只需要这样的代码:

<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
%>

答案 1 :(得分:-1)

好的,我理解的是这个ASP代码将生成一个select-options块,如下面的或类似的。你想要做的是,在选择一个选项之后,你想要转到另一个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获取所选OPTION的值并将其设置在整个SELECT块中。因此,当您提交时,select的变量也将传递给URL。 选择完成后,您必须调用FORM的方法submit(),以便使用值提交表单。

如果要传递已知的变量。就像你之前指出的那样:q = yrSelect,我会使用INPUT HIDDEN表单项,因此你可以安全快速地传递变量。

<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>