如何加载使用下拉列表生成的新页面更改
how to load new page that being generated with dropdown list onchange?
我有以下代码。 我需要它打开此页面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>
相关文章:
- 如何在页面加载后禁用下拉列表框项目的选择
- 当按下链接以在不同页面上的表单中的下拉列表中设置值时
- 使用Ajax或JavaScript选择下拉列表选项后,在同一页面上执行PHP脚本
- 如果使用jquery在页面加载时未选择任何选项,如何禁用下拉列表
- 如何使用JavaScript在JSP页面上从下拉列表中呈现选定值的属性
- jQuery检查自定义Google电子表格页面上输入和下拉列表的更改
- 导航到另一个页面后,bootstrap下拉列表将不可用
- 根据另一个字段选择获取新值后更新下拉列表内容
- JavaScript:使用用于Protractor测试的页面对象选择下拉列表项
- 使用按钮创建新的下拉列表
- 如何加载使用下拉列表生成的新页面更改
- 使用 AsyncPostBackTrigger 填充现有下拉列表,而不是填充新的下拉列表
- 防止在经过不同的菜单项时打开新的下拉列表
- JavaScript:为什么新的下拉列表没有填充值
- 页面.EnableEventValidation = false不识别新的下拉列表值
- 如何在单击按钮时添加新的下拉列表
- 使用jQuery在更改事件上创建新的下拉列表
- 打开新窗口,传递aspx页面中按钮的onClientClick上的下拉列表的文本和值
- 在 ASP 中添加新的下拉列表,而无需重新加载页面
- 根据下拉列表中的选择转发到新页面,而不使用JavaScript