我有以下代码..我需要它在用户选择此生成年份之一后打开此页 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>
答案 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>