javascript - 提交前设置表单变量值

标签 javascript html

我有一个页面,您可以在其中查看酒店信息。此页面上有一个小表格,用于搜索您所在酒店页面的空房情况。

<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 时,如何在提交表单之前设置隐藏值?

最佳答案

你可以 Hook click事件 btnHotelSearchAll然后填写值:

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

绝对确定页面上没有idname “酒店”,并且您没有使用该名称声明的任何全局变量,因为某些版本的 IE have bugs他们在哪里合并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 后运行。所以对于上面的代码,这意味着确保脚本 block 位于页面中的表单下方,如下所示:

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

如果script block 位于按钮上方,那么在脚本运行时按钮将不存在。这就是为什么通常最好将脚本放在 body 末尾的原因之一。元素,就在结束之前 </body>标记 ( more here )。

如果你真的想要按钮上方的脚本,你必须通过将其设为onload来延迟调用。事件处理程序或类似的东西。但是window.onload在页面加载过程非常后期发生(例如,它等待所有图像和其他 Assets 加载),在您的用户可能与您的表单交互很久之后, 所以通常最好早点做。


题外话:我的标准说明是,通过使用像 jQuery 这样的体面的 JavaScript 库,很多这样的东西更早变得更健壮。 , Prototype , YUI , Closure , 或 any of several others .例如,jQuery 将处理 document.getElementById 中的 IE 错误为您提供,因此您不必担心合并问题。

关于javascript - 提交前设置表单变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6597444/

相关文章:

javascript - 将我的 .js 文件与 .html 文件链接

html - 如何阻止按钮从屏幕上消失?

javascript - jQuery Click 事件仅有效一次(之前的 Stack Overflow 答案都没有帮助)

javascript - 如何将 mouseover 和 mouseout 功能转换为点击事件

javascript - es6 中 import Task 和 import { Task } 有什么区别

python - 两个类在 HTML 中具有相同的名称,BeautifulSoup 仅选择第一个类

html - 在 Dart 中管理浏览器历史记录

javascript - Laravel 5 js 被 app.js 阻塞

javascript - getElementByID 在 Firefox 中有效,但在 IE 和 Chrome 中无效

css - 将 SVG 与其他 HTML 元素垂直对齐