提交前设置表单变量值
Setting a form variable value before submitting
我有一个页面,您可以在其中查看酒店信息。这个页面上有一个小表格,用于搜索您所在酒店页面的可用房间。
<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>
但我也需要在表单中添加一个按钮,如果我点击它,我可以搜索所有酒店。为此,我只需要在点击按钮时将名为"酒店"的隐藏输入值设置为0。
当我单击btnHotelSearchAll时,如何在提交表单之前设置隐藏值?
您可以在btnHotelSearchAll
上挂接click
事件,然后填写值:
document.getElementById("btnHotelSearchAll").onclick = function() {
document.getElementById("Hotel").value = "0";
};
请绝对确定页面上没有任何其他包含id
或name
"Hotel",并且您没有使用该名称声明的任何全局变量,因为某些版本的IE存在错误,它们将name
值和全局变量名称合并到用于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
元素的末尾,就在关闭</body>
标记之前的原因之一(此处详细介绍(。
如果您真的想要按钮上方的脚本,则必须将其设置为onload
事件处理程序或诸如此类的东西来延迟调用。但是window.onload
在页面加载过程的后期发生(例如,它会等待所有图像和其他资产加载(,在您的用户可能与您的表单交互很久之后,所以通常最好早点完成。
离题:我的标准注意事项是,通过使用一个不错的JavaScript库,如jQuery、Prototype、YUI、Closure或其他任何库,这些东西都变得更早、更健壮。例如,jQuery将为您处理document.getElementById
中的IE错误,因此您不必担心合并问题。
如果您想使用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>
使用onclick
属性调用javascript函数,该函数将设置隐藏字段值
<input type="submit" name="btnHotelSearchAll" value="Search All Hotels" onclick="SetHotelID();">
<script>
function SetHotelID()
{
$('#Hotel').val('0');
}
</script>
注意我使用的是Jquery
给你,让我知道这是否有效。。。
<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"'>
- JavaScript:单击时相对于父级增加变量值
- 单击按钮时重写javascript变量值
- 使用 php 变量值填充表单输入字段
- 使 HTML 表单输入字段在提交时保持不变
- 我需要刷新表单,但仍然保持复选框的值不变
- 根据变量值将类动态添加到表中
- 使用 Watir 单击具有变量值的单选按钮
- 所选表单-当表单的值被选中时,如何更改变量值
- 提交表单后,文本区域值保持不变
- 使代码变短&表单验证
- 如何在LiveCycle with Java Script中单击复选框时返回变量值
- 如何在表单操作中设置变量值
- 尝试将html表单中的变量值添加到javascript中
- JS函数清除我的表单变量值
- 在javascript上使用onClick增加变量值,并在HTML表单上显示新值
- 如何将表单输入属性设置为计算的全局变量值
- 将变量值从html表单传入javascript
- 提交前设置表单变量值
- Javascript:重置表单创建的变量值
- JavaScript多步表单won't更新函数外的变量值时,返回已更新的变量