【问题标题】:Use javascript to close all opened forms before opening a new one在打开新表单之前使用 javascript 关闭所有打开的表单
【发布时间】:2015-12-20 17:55:26
【问题描述】:

我正在制作一个带有图像的 html 页面,用户在其中单击他们的图像,以登录到他们的发票页面。这是我目前所拥有的:

<script type="text/javascript">
   function showHideForm(formid) 
    {
       var _form = document.getElementById(formid);
      _form.style.display = (_form.style.display != "block") ? "block" : "none";
       return false;
    }
</script>

<p>
  <a href="#" onclick="return showHideForm('hiddenForm1');">
    <img src="" width="150" height=    "150" />
  </a>
</p>
<form  id="hiddenForm1" style="display: none;" method="post" action="user1_login.php">
  <input type="text" name="user" placeholder="Name" required /><br />
  <input type="text" name="pass" placeholder="Password" required/><br />
  <input type="submit" name="Submit" value="Submit" />
</form>

<p>
  <a href="#" onclick="return showHideForm('hiddenForm2');">
    <img src=""  width="150" height="150" />
  </a>
</p>
<form  id="hiddenForm2" style="display: none;" method="post" action="user2_login.php">
  <input type="text" name="user" placeholder="Name" required /><br />
  <input type="text" name="pass" placeholder="Password" required/><br />
  <input type="submit" name="Submit" value="Submit" />
</form>

它工作得很好,除了如果你点击其他图像,你会同时打开几个实例。

是否可以在 javascript 的开头添加一些代码以在运行代码以打开新表单之前关闭任何打开的实例?

【问题讨论】:

  • 你在说什么其他图片。它按预期工作正常。
  • 是的,它运行良好。我已经放了两张图片来展示正在发生的事情,但实际上我将有一页至少有 20 张图片。如果有人点击了错误的链接或只是在尝试,该页面将被打开的表单乱七八糟。我只是想让它整洁。 (如果可能的话)。
  • 给我一些时间回答。
  • 你可以免费使用 jQuery 吗?
  • 您想要 jquery 或纯 javascript 的答案吗?

标签: javascript html forms login


【解决方案1】:

逻辑很简单,有一个openform的类。在单击事件中,从现有打开的表单中删除该类,并将该类添加到当前单击的表单中。这是使用 jquery 的方法。

 function showHideForm(formid) 
 {
    // var _form=$("#"+formid);  (in jquery)

    var _form =document.getElementById(formid);
    //select all existing opened forms and remove the class
    $('.openedForm').removeClass('openedForm');
    //add the openedForm class to the currently clicked 
    $(_form).addClass('openedForm');
    return false;
 }

将以下代码添加到您的 css 文件中。

  .openedForm
     {
        display:block !important;
     }

如果您需要使用 javascript 更改元素的 css,请尝试使用类。通过这种方式,您可以使您的 javascript 代码更清晰易读,并且您的样式逻辑与主逻辑保持分离。 尽量避免使用内联样式。

工作演示:
https://jsbin.com/nigivu/edit?html,css,js,output

【讨论】:

  • 如果这解决了您的问题,那么请通过接受答案来承认我的努力。这让我保持动力。如有任何疑问,请随时询问
  • 太棒了。这正是我想要的。非常感谢。
  • 如果您接受答案作为解决方案,我将不胜感激。
  • 我不知道该怎么做
  • 我打勾了。我认为这是正确的,但需要 24 小时才能得出结论。
猜你喜欢
  • 2014-04-07
  • 2010-12-20
  • 2014-01-06
  • 1970-01-01
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 1970-01-01
相关资源
最近更新 更多