这是什么:document.reservation.submit();应该做的?

时间:2015-07-27 12:35:57

标签: javascript jquery html

我正在修改旧开发人员的代码,我正在尝试预订表单。

我查看了整个代码,唯一称为预留的是表单的名称和ID。

表格风格:display:none ...

所以两个问题合而为一:首先应该做的是什么

document.reservation.submit();是否可以通过他的名字获取表格?

不应该像document.getElementById('reservation').submit()那样吗?

我的第二个问题是:如果所有值都设置为display:none,表格是如何发送的,我强硬它无法正常工作,如果你想隐藏它们,你应该使用隐藏属性... < / p>

我需要对这些家伙提供一些帮助pls :)

beter comprehension的形式:

<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">

2 个答案:

答案 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}}内容属性的值,公开appletembedform,{{ 1}},以及iframe中具有非空img内容属性的公开object元素,以及所有{{1}的Document内容属性的值name中具有非空id内容属性的applet个元素以及所有object的{​​{1}}内容属性的值Document中包含非空id内容属性和非空id内容属性的元素。

这些属性的值是imgDocument来自的元素。

name对象还为id的每个元素获取属性,为described here

  

支持的属性名称随时由树形顺序组成,忽略以后的重复项:

     
      
  • 活动文档的任何子浏览上下文的浏览上下文名称,其名称不是空字符串,
  •   
  • 所有nameidwindowidname,{{1}的a内容属性的值活动文档中具有非空applet内容属性的<},areaembed元素,
  •   
  • 活动文档中具有非空form内容属性的任何HTML元素的frameset内容属性的值。
  •   

这些属性的值再次是imgobject来自的元素。

在这两种情况下,HTML5规范标准化了大多数浏览器以前普遍但非标准的做法,这种做法在野外广泛使用。

  

如果将所有值设置为display,则如何发送表单:none我强硬它无法工作,如果你想隐藏它们,你将使用隐藏属性......

每个问题最好提出一个问题。

CSS name属性对表单字段是否已提交完全没有影响;您可能正在考虑该字段的disabled state:已提交时,已禁用表单字段。

答案 1 :(得分:1)

显示无或隐藏信息将始终发送,即使您无法看到....通常我们会传递一些用户不需要知道的信息,例如USER_ID = 20 ... ..----和

document.reservation.submit

-------它提交名称为&#34; reservation&#34;