【问题标题】:Submit button stay in form after click点击后提交按钮停留在表单中
【发布时间】:2020-01-21 09:31:03
【问题描述】:

enter image description here我想在点击提交按钮后停留在表单视图中 我有一个带按钮的导航栏:

<div class="bar blueGrey">
  <button class="bar-item button tablink orange" onclick="openNavBarChoise(event,'HomePage')">Home</button>
  <button class="bar-item button tablink" onclick="openNavBarChoise(event,'CVsPage')">CV</button>
  <button class="bar-item button tablink" onclick="openNavBarChoise(event,'ContactPage')">Contact</button>
</div>

Javascript 代码:

function openNavBarChoise(evt, choiceName) {
  var i, x, tablinks;
  x = document.getElementsByClassName('choice');
  for (i = 0; i < x.length; i++) {
    x[i].style.display = 'none';
  }
  tablinks = document.getElementsByClassName('tablink');
  for (i = 0; i < x.length; i++) {
    tablinks[i].className = tablinks[i].className.replace(' orange', '');
  }
  document.getElementById(choiceName).style.display = 'block';
  evt.currentTarget.className += ' orange';
}

当有人点击按钮联系人时,请转到联系表。 点击提交后我想留在这个表单中,但是这段代码返回首页。

<!--/*************** Begin Contact Page ***************/-->
<div id="ContactPage" class="container border choice" style="display:none">
  <div class="panelChristos00">
      <div class="ImgFPanel">
          <img class="ImgPP" id="imgJob" src="Icons\contactSupport.png" alt="contactSupport" width="80px">
      </div>

      <div id="ergasia" class="firstLine">
          <h2>Form</h2>
      </div>

      <div class="container">


          <form id="form0" method="post" >

              <div class="requiredM00">
                  <p style="color:red"><?php echo $requiredMessage;?></p><p style="color:blue"><?php echo $completeMessage;?></p>
              </div>
              <label for="name">Name <span class="error" style="color:red">*<?php echo $nameErr;?></span></label>
              <input type="text" name="name" value="<?php echo $name;?>">

              <label for="email">Email <span class="error" style="color:red">* <?php echo $emailErr;?></span></label>
              <input type="text" name="email" value="<?php echo $email;?>">

              <label for="phone">Phone <span class="error" style="color:blue"> <?php echo $phoneErr;?></span></label>
              <input type="text" name="phone" value="<?php echo $phone;?>">

              <label for="subject">Message <span class="error" style="color:red">*<?php echo $subjectErr;?></span></label>
              <textarea id="subject" name="subject" style="height:200px"    ><?php echo $subject; ?></textarea>

              <input type="submit" value="Send">
          </form>
      </div>
  </div>
</div>

【问题讨论】:

  • 然后更改类型提交到按钮
  • @DevsiOdedra 那么表单可能会简单地停止做任何事情,目前似乎没有任何东西会在后台通过 AJAX 提交表单然后......
  • 您想留在联系表格中并仍然发送表格,对吗?您需要使用 ajax 才能做到这一点。例如,将事件处理程序(在提交时)附加到表单并 preventDefault 事件以防止其默认行为(如返回主页)
  • @04FS你有什么解决办法吗?

标签: javascript php onclick submit


【解决方案1】:

默认情况下,表单提交按钮将表单提交给自身以停止在表单提交按钮上使用 evt.preventdefault()

【讨论】:

  • 谢谢。如何在我的代码中使用它?当按下发送时,停留在这个表单中并运行 php 代码。
【解决方案2】:

您想留在联系表单中并仍然发送表单,对吗?你需要使用 ajax 才能做到这一点。

将事件处理程序(在提交时)附加到表单并 preventDefault 事件以防止其默认行为(如返回主页)

var form_el = document.getElementById("form0");

form_el.addEventListener("submit", function(e) {
    e.preventDefault(); // this will prevent the page from going back to homepage

    var form  = new FormData(this);

    var XHR = new XMLHttpRequest();

    XHR.open("POST", "server.php", true);

    // response handler
    XHR.onload = function () {
     // do something with the response
      if (xhr.status === 200) {
        var userInfo = JSON.parse(xhr.responseText);
      }
    };

    XHR.send(form);
});

【讨论】:

  • 谢谢!我将此代码添加到我的 idex.php 文件中,并且我已将 myForm 更改为 form0 并将 server.php 更改为 index.php。我有完全一样的问题。我想保持 php 调用的结果。表单的 PHP 代码在同一个文件中。
  • 没有。我将此代码插入到我的文件 index.php 中,即表单和 php 代码。你能帮我更多吗?如何让你的代码适应我的。
  • 谢谢。当我按下“发送”按钮时什么都不做。
  • 我还添加了一张图片,它更好地描述了我想要做什么。
【解决方案3】:

你可以这样做,它将带你到你想要的新标签

 <form action="your file name">
        <input type="text">
        <input onclick="e.preventDefault()" type="submit" formtarget="_blank">
 </form>

【讨论】:

  • 你也可以像这样在表单标签中添加目标属性
  • 我不想要新标签。我想留在同一个标​​签,我的 php 代码的结果。
  • 然后移除目标属性
  • 谢谢。你能看看我的 jpeg,谁描述了我想做的事情。
  • 那么你必须通过按钮上的事件监听器提交表单并调用 api 并通过它提交,为此使用 ajax 或任何其他库阅读此w3schools.com/php/php_ajax_php.asp 然后你不必使用操作表单我不了解 php,但在 javascript 中 fetch() 用于观看此视频youtube.com/watch?v=ko3cBzW-q8o 这可能会帮助您 音质很差,我为您找到的所有内容
猜你喜欢
  • 2012-05-17
  • 2017-04-26
  • 2016-01-11
  • 1970-01-01
  • 1970-01-01
  • 2013-10-18
  • 2016-01-21
  • 2012-11-08
  • 2014-09-16
相关资源
最近更新 更多