【问题标题】:Submit button sends me to the top of the page提交按钮将我带到页面顶部
【发布时间】:2022-01-31 18:01:00
【问题描述】:

首先我想对我糟糕的英语说声抱歉。

我想说的是,在创建这个主题之前,我已经检查了这里的其他主题并尝试了那里提供的解决方案,但对我来说没有用。

所以,我在页面底部有一个表单,用于验证表单字段中插入的域是否可用。

所以 HTML 代码是这样的:

<div class="row footer-newsletter justify-content-center">
      <div class="col-lg-6">
        <form action="#rezultat" method="GET" id="rezultat">
          <input type="text" name="domain" style="border: 0;padding: 4px 8px;width: calc(100% - 100px);" placeholder="Exemplu: numedorit.ro sau numedorit.eu" required><input type="submit" value="Verifica">
        </form>
      </div>
    </div>

表单的动作没有任何.php文件,因为php代码与上面的HTML在同一个文件中,代码是:

<?php
          error_reporting(0);
          if(isset($_GET['domain'])){
            $domain = $_GET['domain'];
            if ( gethostbyname($domain) != $domain ) {
                echo '<center><strong><font color="red">Denumirea selectata nu este disponibila..</font></strong></center>';
            }
            else {
                echo '<center><strong><font color="green">Denumirea selectata este disponibila..</font></strong></center>';
            }
          }
        ?>

当我按下提交按钮时出现问题,因为它将我发送到页面顶部,而不是将我发送到“#rezultat”锚我该如何计划。

我使用了那个锚,因为这是我在这里阅读某个主题的方式,但它不起作用。 我注意到的是,在我按下提交按钮并将我发送到页面顶部后,我在地址栏上看到:

http://********.ro/?domain=domain1234asd.com#rezultat

其中 domain1234asd.com 是我刚刚检查的域名是否可用。 事实是,无论域是否可用,我的 php 代码都会正确返回,并且它会返回正确的 html 代码和结果。

提前感谢您的回复。

编辑: @brombeer 刚刚给了我一个很好的答案,'action="#rezultat"' 并没有将我发送到锚点#rezultat,因为该锚点是页面上的最后一个元素,非常向下。 (IDK WHY ????? 他的评论已经不存在了,即使它是唯一正确的???????? omg..)

出于测试目的,我只是在页面中间的某处设置了一个新的锚点,效果很好。 所以新的问题是如果这个元素是我页面上的最后一个元素,我如何设置'action="#rezultat"'以将我发送到ID'rezultat' ??......

【问题讨论】:

  • 我不明白这个想法。为什么要在我的内容下面添加很多 lrem ipsum ?我不需要那些 lorem ipsum....
  • @brombeer 你完全正确!我只是将动作设置到页面中间某处的另一个锚点,然后在我按下提交 php 脚本运行后 -> 返回结果 -> 将我发送到页面中间的新锚点。但重点是将我发送到我想要的锚点所在的页面底部。既然我谈论的这个表单几乎是我页面上的 las 元素,我该怎么做?
  • 要么将表单进一步向上移动,要么在其下方添加空格或页脚,以便它可以滚动到页面顶部

标签: php html forms form-submit


【解决方案1】:

URL 中的哈希字符用于导航项,其 id 值等于哈希,称为 URI 碎片。在您的情况下 rezultat 当浏览器在 url 中看到 #rezultat 时,它会尝试查找具有 id="rezultat" 的元素,如果没有具有该 id 的元素,浏览器会将您发送到页面顶部。所以不要使用#rezultat,而是像这样使用它 http://********.ro/domain=domain1234asd.com&hash=rezultat

【讨论】:

  • 感谢您的回复!我已经发布了我的 html 代码,所以如果您阅读
    " 已经有一个 id 包含 "rezultat" 作为锚点,所以提交按钮应该将我发送到该 ID。对不起,但您的回答对我没有太大帮助,或者我可能不太了解您在那里写的内容。顺便说一句,我什至尝试插入您的 url 示例:“http ://********.ro/domain=domain1234asd.com&hash=rezultat" 在地址栏中,它仍然没有将我发送到那个锚点。
  • &amp;hash=rezultat 应该做什么?
  • 我不知道......这对我来说也很奇怪......
【解决方案2】:

看看这一行,

     <form action="#rezultat" method="GET" id="rezultat">

您正在将数据发送到页面引用。这就是您无法提交数据的原因。您必须将此操作指向输入您的 php 获取数据的链接。

这里发生了什么?

  • 当您单击提交时,它会将您带到页面中写入/指定 id 的部分。

【讨论】:

  • 感谢您的回答!事实是数据已正确提交,因此在按下提交按钮 PHP 代码正确运行并检查域是否可用后,它会返回一个 html 代码,其结果与 echo 行中指定的结果相同。另一方面,它并没有像你说的那样发生,因为如果提交按钮会让我进入写入/指定 id 的页面部分,那么问题就不会存在。 ID 在页面末尾的
    标记中写入/指定。
  • "这就是你不能提交数据的原因" OP 可以提交数据。 not 必须在action 属性中有一个链接。如果为空,表单将提交到当前页面
  • @brombeer 如果它是空的 php 脚本仍在工作并返回正确的结果,但它仍将我带到页面顶部,如果在操作中添加“#rezultat”,它不会不要带我去 ID="rezultat"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多