2011-07-06 67 views
7

我有一個頁面,您可以查看酒店的信息。在此頁面上有一個表格,用於搜索您所在酒店頁面的空房情況。提交前設置表單變量值

<form id="form1" name="form1" action="search.asp" method="POST"> 
    <input type="hidden" id="Hotel" name="Hotel" value="<%= HotelID %>"> 

    Arrive: <input value="<% strURLBookingDate %>" type="text" id="ArrivalDate" name="ArrivalDate">        
    Depart: <input value="<% strURLBookingDate2 %>" type="text" id="DepartureDate" name="DepartureDate"> 

    <input type="submit" name="btnHotelSearch" value="Search This Hotel"> 
    <input type="submit" name="btnHotelSearchAll" value="Search All Hotels">       
</form> 

但我還需要添加一個按鈕到表單,如果我點擊它,將允許我搜索所有酒店。要做到這一點,我只需要點擊按鈕時將隱藏的名爲「Hotel」的輸入值設置爲0。

當我點擊btnHotelSearchAll時,如何在表單提交之前設置隱藏值?

回答

15

您可以在btnHotelSearchAll掛鉤click事件,然後在填寫值:

document.getElementById("btnHotelSearchAll").onclick = function() { 
    document.getElementById("Hotel").value = "0"; 
}; 

絕對肯定有什麼其他有要麼idname「酒店」的頁面上,而您沒有使用該名稱聲明的全局變量,因爲某些版本的IE have bugsname值和全局變量名稱混合到它們用於document.getElementById的名稱空間中。或者,也可以使隱藏字段上的id更具獨特性(name可以保持原樣,因此您不必更改後端; id只是客戶端,name是發送到服務器的內容)。例如,你可以這樣做:

<input type="hidden" id="HotelField" name="Hotel" value="<%= HotelID %>"> 
          ^

,然後改變一下代碼:

document.getElementById("btnHotelSearchAll").onclick = function() { 
    document.getElementById("HotelField").value = "0"; 
    //       ^
}; 

更新

注意,代碼掛鉤按鈕必須在之後運行該按鈕已放入DOM中。因此,與上面的代碼,這意味着確保腳本塊在頁面下面的表格,是這樣的:

<form ...> 
.... 
</form> 
... 
<script> 
... 
</script> 

如果script以上按鈕,則該按鈕將不存在至於腳本何時運行。這是爲什麼經常最好在關閉</body>標記(more here)之前將腳本放在body元素末尾的原因。

如果你真的想要以上的腳本按鈕,你必須通過使它成爲onload事件處理程序或類似的東西來延遲呼叫。但window.onload發生非常在頁面加載的過程中(例如,等待全部圖像和其他資源加載),在用戶可能與您的表單進行交互之後很久,所以通常最好儘快完成。


題外話:我的標準。注意,很多東西是更早和更強勁的通過一個體面的JavaScript庫,例如jQueryPrototypeYUIClosure,或any of several others製成。例如,jQuery將爲您處理document.getElementById中的IE錯誤,因此您不必擔心合併問題。

+1

+1對於沒有使用jQuery來處理這樣一項瑣碎的任務。 –

+0

@Anders:LOL,我在最後加了一個題外話題,可能會讓你收回! :-)但是我確實證明了它的正確性,主要答案並不需要任何庫(我不相信用jQuery特定的答案來回答非jQuery問題,但我確實標記了一個體面的庫 - jQuery或其他 - 可能會有所幫助)。 –

+0

由於某些原因,這不起作用,當我單擊按鈕時腳本從未運行。有什麼我需要做的,以獲得代碼啓動? – Steven

1

如果您想使用jQuery,請嘗試以下操作。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" ></script> 

<script type="text/javascript" > 
$(function(){ 
    $('#btnHotelSearch').click(function(){ 
    $('#Hotel').val(0); 
    }); 
}); 
</script> 
1

使用onclick屬性調用javascript函數,將設置隱藏字段的值

<input type="submit" name="btnHotelSearchAll" value="Search All Hotels" onclick="SetHotelID();"> 

<script> 
    function SetHotelID() 
    { 
     $('#Hotel').val('0'); 
    } 
</script> 

注意我使用Jquery

1

在這裏你去,讓我知道,如果這個工程。 ..

<form id="form1" name="form1" action="" method="POST"> 
<input type="hidden" id="Hotel" name="Hotel" value="<%= HotelID %>"> 

Arrive: <input value="<% strURLBookingDate %>" type="text" id="ArrivalDate" name="ArrivalDate">        
Depart: <input value="<% strURLBookingDate2 %>" type="text" id="DepartureDate" name="DepartureDate"> 

<input type="submit" name="btnHotelSearch" value="Search This Hotel"> 
<input type="submit" name="btnHotelSearchAll" value="Search All Hotels" onclick='document.getElementById("Hotel").value="0"'> 

相關問題