Javascript 在HTML中隐藏/显示表单会产生不寻常的结果

Javascript 在HTML中隐藏/显示表单会产生不寻常的结果,javascript,html,css,forms,Javascript,Html,Css,Forms,我已经尝试了一段时间(一段时间=一整天)来弄明白为什么我的表格有这个奇怪的问题。我有一个客户,他想要一个本地运行的独立HTML页面,该页面将显示一个表单,其中包含两个文本框和一个按钮。输入信息并单击该按钮后,第二个表单将显示新的文本框。表单不能重定向到其他网站或文件。这一切都必须在该(HTML)文件中 我发现这对于jQuery来说是最容易做到的,但仅仅为了隐藏一个表单而加载整个库显然是愚蠢的。所以我看了看其他选项,决定使用纯Javascript 问题是,当我第一次单击“下一步”时,第一个表单消失

我已经尝试了一段时间(一段时间=一整天)来弄明白为什么我的表格有这个奇怪的问题。我有一个客户,他想要一个本地运行的独立HTML页面,该页面将显示一个表单,其中包含两个文本框和一个按钮。输入信息并单击该按钮后,第二个表单将显示新的文本框。表单不能重定向到其他网站或文件。这一切都必须在该(HTML)文件中

我发现这对于jQuery来说是最容易做到的,但仅仅为了隐藏一个表单而加载整个库显然是愚蠢的。所以我看了看其他选项,决定使用纯Javascript

问题是,当我第一次单击“下一步”时,第一个表单消失,但第二次单击“下一步”时,就像发送了某种请求一样。下面是我目前拥有的代码。我尝试制作一个JSFIDLE,但每次访问它时浏览器都会阻塞

Javascript

function hideAll() {
  document.getElementById('first').style.display = 'block';
  document.getElementById('second').style.display = 'none';
  showFirstForm();
}

function showFirstForm() {
  if (document.getElementById('second').style.display == 'block') {
    document.getElementById('first').style.display = 'block';
    document.getElementById('second').style.display = 'none';
    }
}

function showSecondForm() {
  if (document.getElementById('first').style.display == 'block')
  {
    document.getElementById('second').style.display = 'block';
    document.getElementById('first').style.display = 'none';
  }
}
<body class="if5" onload="hideAll()"> // I'm loading hideAll() on refresh to hide second form
   ....
    <!-- FORM 2 -->
    <form id="first" action="#" class='tx_anmelden' method="post" autocomplete="off" >

    <filedset>
    <label for="name"> Your name </label>
    <input name="name" value="MyName" /></input>
    <button onClick="showFirstForm()">Next</button>
    </filedset>
    </form>


    <!-- FORM 1 -->
    <form id="second" class='tx_anmelden'>

    <fieldset>
    <label for="name"> Your name </label>
    <input name="name" value="MyNaffffffme" /></input>
    <button onClick="showSecondForm()">Next</button>
    </fieldset>
    </form>
   ....
HTML

function hideAll() {
  document.getElementById('first').style.display = 'block';
  document.getElementById('second').style.display = 'none';
  showFirstForm();
}

function showFirstForm() {
  if (document.getElementById('second').style.display == 'block') {
    document.getElementById('first').style.display = 'block';
    document.getElementById('second').style.display = 'none';
    }
}

function showSecondForm() {
  if (document.getElementById('first').style.display == 'block')
  {
    document.getElementById('second').style.display = 'block';
    document.getElementById('first').style.display = 'none';
  }
}
<body class="if5" onload="hideAll()"> // I'm loading hideAll() on refresh to hide second form
   ....
    <!-- FORM 2 -->
    <form id="first" action="#" class='tx_anmelden' method="post" autocomplete="off" >

    <filedset>
    <label for="name"> Your name </label>
    <input name="name" value="MyName" /></input>
    <button onClick="showFirstForm()">Next</button>
    </filedset>
    </form>


    <!-- FORM 1 -->
    <form id="second" class='tx_anmelden'>

    <fieldset>
    <label for="name"> Your name </label>
    <input name="name" value="MyNaffffffme" /></input>
    <button onClick="showSecondForm()">Next</button>
    </fieldset>
    </form>
   ....
//我正在刷新时加载hideAll()以隐藏第二个表单
....
你的名字
下一个
你的名字
下一个
....
参考资料:


除了您的表单id被切换之外,
还有一个默认类型
提交
。因此,当您单击按钮时,它会将表单发布到
#
。因此,请更正表单ID,然后将按钮代码类型更改为
button

<button type="button" onClick="showSecondForm()">Next</button>
下一步
以下是一些文档:


下面是一个正在工作的jsfiddle,它使用了正确的代码:

除了切换了表单id之外,
还有一个默认类型
submit
。因此,当您单击按钮时,它会将表单发布到
#
。因此,请更正表单ID,然后将按钮代码类型更改为
button

<button type="button" onClick="showSecondForm()">Next</button>
下一步
以下是一些文档:


下面是一个正在工作的jsfiddle,它使用了正确的代码:

除了切换了表单id之外,
还有一个默认类型
submit
。因此,当您单击按钮时,它会将表单发布到
#
。因此,请更正表单ID,然后将按钮代码类型更改为
button

<button type="button" onClick="showSecondForm()">Next</button>
下一步
以下是一些文档:


下面是一个正在工作的jsfiddle,它使用了正确的代码:

除了切换了表单id之外,
还有一个默认类型
submit
。因此,当您单击按钮时,它会将表单发布到
#
。因此,请更正表单ID,然后将按钮代码类型更改为
button

<button type="button" onClick="showSecondForm()">Next</button>
下一步
以下是一些文档:


下面是一个正在工作的JSFIDLE,它使用了正确的代码:

首先,表单中没有type属性或type属性为submit的任何按钮在默认情况下都会在单击时提交表单

其次,看起来您正在尝试实现某种向导。如果这是真的,您不希望每个部分都是它自己的表单,因为在最后,您将希望将所有这些数据发送到服务器,如果它是两种表单,那么服务器将无法工作

整个内容需要以一种形式呈现,其中包含显示/隐藏的部分。在要使用的分区之间导航

Next

做巫师总是一件痛苦的事。一旦开始处理验证,您需要找出哪个步骤中有错误,并显示该部分,或者如果用户使用“后退”按钮,他们可能希望表单返回到第一步。您可能希望搜索提供某些锅炉板功能的第三方解决方案

这会让你有一个好的开始

编辑


不要从头开始尝试。使用

首先,表单中没有类型属性或类型属性为“提交”的任何按钮在默认情况下都会在单击时提交表单

其次,看起来您正在尝试实现某种向导。如果这是真的,您不希望每个部分都是它自己的表单,因为在最后,您将希望将所有这些数据发送到服务器,如果它是两种表单,那么服务器将无法工作

整个内容需要以一种形式呈现,其中包含显示/隐藏的部分。在要使用的分区之间导航

Next

做巫师总是一件痛苦的事。一旦开始处理验证,您需要找出哪个步骤中有错误,并显示该部分,或者如果用户使用“后退”按钮,他们可能希望表单返回到第一步。您可能希望搜索提供某些锅炉板功能的第三方解决方案

这会让你有一个好的开始

编辑


不要从头开始尝试。使用

首先,表单中没有类型属性或类型属性为“提交”的任何按钮在默认情况下都会在单击时提交表单

其次,看起来您正在尝试实现某种向导。如果这是真的,您不希望每个部分都是它自己的表单,因为在最后,您将希望将所有这些数据发送到服务器,如果它是两种表单,那么服务器将无法工作

整个内容需要以一种形式呈现,其中包含显示/隐藏的部分。在要使用的分区之间导航

Next

做巫师总是一件痛苦的事。一旦开始处理验证,您需要找出哪个步骤中有错误,并显示该部分,或者如果用户使用“后退”按钮,他们可能希望表单返回到第一步。您可能希望搜索提供某些锅炉板功能的第三方解决方案

这会让你有一个好的开始

编辑

不要从头开始尝试。首先使用任何