2014-12-13 83 views
-1

我有以下代码..我需要它打开此页面bill_report.asp?q = yr选择用户选择此生成年份之一后。尝试谷歌很多,但无法找到适合我的代码。所以你能帮我解决。非常感谢你如何加载下拉列表onchange生成的新页面?

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

回答

-1

好吧,我的理解是,这个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获取所选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> 
+0

感谢..但它可能无法正常工作。 – Alxan 2014-12-13 14:26:32

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 
%> 
相关问题