2014-12-13 80 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 
%> 
相關問題