我正在修改旧开发人员的代码,我正在尝试预订表单。
我查看了整个代码,唯一称为预留的是表单的名称和ID。
表格风格:display:none
...
所以两个问题合而为一:首先应该做的是什么
document.reservation.submit();
是否可以通过他的名字获取表格?
不应该像document.getElementById('reservation').submit()
那样吗?
我的第二个问题是:如果所有值都设置为display:none
,表格是如何发送的,我强硬它无法正常工作,如果你想隐藏它们,你应该使用隐藏属性... < / p>
我需要对这些家伙提供一些帮助pls :)
<form name='reservation' action='http://xxxx/reservationFormAction.to' method="POST" id="reservation">
<input type="hidden" id="productLive" name="product" value="{$product.info.code}"/>
<input type="hidden" name="complementaryParameters" value=""/>
<input type="text" name="depCityCode" id="depCityCode" style="display:none" />
<input type="text" name="dateDep" id="dateDep" style="display:none" />
<input type="text" name="nightDuration" id="nightDuration" style="display:none" />
<input type="text" name="dayDuration" id="dayDuration" style="display:none" />
<input type="text" name="provider" value="{$product.tourOperator.code}" style="display:none" />
<input type="text" id="toProduct" name="toCode" value="{$product.info.toProductCode}" style="display:none" />
<input type="text" name="catalogCode" value="{$product.info.code}" style="display:none" />
{if $ecall}
<input type="text" name="reservationProfileChannelCode" value="ECALL" style="display:none" />
{else}
<input type="text" name="reservationProfileChannelCode" value="ADV" style="display:none" />
{/if}
<input type="text" name="nbAdults" id="nbAdults" style="display:none" />
<input type="text" name="nbChildren" id="nbChildren" style="display:none" />
<input type="text" name="nbBabies" id="nbBabies" style="display:none" />
<input type="text" name="productUrl" id="productUrl" style="display:none" value="http://www.xxxx.com/{$product.slug}_{$product.info.code}.html" />
<input type="text" name="homeUrl" id="homeUrl" style="display:none" value="http://www.xxxx.com" />
<span id="ageChild" style="display:none"></span>
<div class="update-search clearfix">
答案 0 :(得分:5)
document.reservation
获取HTMLFormElement
name
表单的reservation
。然后调用submit
提交表单(不触发submit
事件)。
那为什么不document.getElementById
?这将也工作,但document.reservation
有效,因为document
对象会自动创建在其上创建的各种属性,包括通过name
引用表单的属性。这在§3.1.3 of the HTML5 spec *中有所涉及(你必须向下滚动一下):
Document
接口支持命名属性。受支持的属性名称随时包含所有name
的{{1}}内容属性的值,公开applet
,embed
,form
,{{ 1}},以及iframe
中具有非空img
内容属性的公开object
元素,以及所有{{1}的Document
内容属性的值name
中具有非空id
内容属性的applet
个元素以及所有object
的{{1}}内容属性的值Document
中包含非空id
内容属性和非空id
内容属性的元素。
这些属性的值是img
或Document
来自的元素。
name
对象还为id
的每个元素获取属性,为described here:
支持的属性名称随时由树形顺序组成,忽略以后的重复项:
- 活动文档的任何子浏览上下文的浏览上下文名称,其名称不是空字符串,
- 所有
name
,id
,window
,id
,name
,{{1}的a
内容属性的值活动文档中具有非空applet
内容属性的<},area
和embed
元素,- 活动文档中具有非空
form
内容属性的任何HTML元素的frameset
内容属性的值。
这些属性的值再次是img
或object
来自的元素。
在这两种情况下,HTML5规范标准化了大多数浏览器以前普遍但非标准的做法,这种做法在野外广泛使用。
如果将所有值设置为display,则如何发送表单:none我强硬它无法工作,如果你想隐藏它们,你将使用隐藏属性......
每个问题最好提出一个问题。
CSS name
属性对表单字段是否已提交完全没有影响;您可能正在考虑该字段的disabled
state:已提交时,已禁用表单字段。
答案 1 :(得分:1)
显示无或隐藏信息将始终发送,即使您无法看到....通常我们会传递一些用户不需要知道的信息,例如USER_ID = 20 ... ..----和
document.reservation.submit
-------它提交名称为&#34; reservation&#34;