【问题标题】:Javascript jump to anchor based on submit value/nameJavascript 根据提交值/名称跳转到锚点
【发布时间】:2012-09-09 18:46:03
【问题描述】:

我正在处理一个基本上是长表单的页面,其中包含信息表,每个表后面都有一个提交按钮。

表单自己提交并根据用户输入更改表格中的信息。

如果按下“提交按钮 X”,我想做的是让页面跳转到“部分 X”,如果按下“提交按钮 Y”,则跳转到“部分 Y”,等等。

我目前在文档的头部使用这个 Javascript 来尝试完成这个:

<script type="text/javascript">

var anchors = new Array(

<?php 
for($i = 0; $i < 13; $i++) {
    $anchors =  "\"$divTag[$i]\"";
    if($i < 12) {
        $anchors .= ", ";
    }
    echo $anchors;
} ?>

)

function jumpToAnchor() {

    <?php if(isset($_POST["submit_fjw"])) { ?>

    window.location = String(window.location).replace(/\#.*$/, "") +
    "#" + anchors[0];

    <?php } if(isset($_POST["submit_jwl"])) { ?>

    window.location = String(window.location).replace(/\#.*$/, "") +
    "#" + anchors[1];

    <?php } ?>
}

它工作......有点。它不会在第一次按下提交按钮时跳转,而是在第二次按下时跳转。

我愿意接受建议... Javascript 越少越好,因为我的 Javascript 技能充其量是薄弱的。我可以使用绑定到提交按钮的变量将值传递给 PHP 脚本并正确跳转到正确的部分吗?

【问题讨论】:

  • 您是否尝试将您的逻辑封装在 window.onload = function(){ ... }; 中?
  • @Salman A 不,我没有尝试过......只是做了它并且效果很好。感谢您将像我这样的 JS hack 指向正确的方向。完美!
  • 在这里看看答案:stackoverflow.com/questions/8731653/…

标签: javascript php forms dom-events


【解决方案1】:

你尝试过这样的事情吗?

<form action="thisfile.php#section2" name="form1" ... >
....
</form>

<a name="section2">
<form action="thisfile.php#section3" name="form2" ... >
....
</form>

<a name="section3">
<form ....

form1 提交时,文件重新加载并自动转到名为 section2 的锚点,当 form2 提交时,它会滚动到 section3 等

【讨论】:

  • 谢谢伊恩。我曾想过,但页面是一个长格式。并不想将其拆分为多种形式。
【解决方案2】:

您是否发现使用http://www.w3schools.com/html/html_links.asp(HTML 链接-名称属性部分)代替javascript 更方便?只是一个建议。

【讨论】:

  • 嗯 ... wikipedia 使用了巧妙的小技巧,即在 url 中提供 id 以“跳转”到某个部分。不是名称,因为它们不是唯一的。
  • @TigOldBitties 这基本上就是我正在做的事情。表单上的每个表都在一个 div 内,其 id 与 javascript 中的锚点 var 中的相应数组索引相同。
  • 那么你就不需要任何javascript了。将#comment-16569568 添加到此页面的 url 将使您的评论可见。这是自 html 出现以来实现的浏览器功能
  • Tim,你可以把 之类的隐藏锚点放在你想发送用户的地方,然后使用 或者只是没有“button”-tag 的“a”-tag。
  • @TigOldBitties 是的,如果我想硬编码 13 个提交按钮,我可以轻松地将 #bluh 附加到 URL 的末尾。我所有的提交按钮都是通过调用一个 PHP 函数创建的,所以关键是要知道点击来自表单中的“哪里”,而无需对一堆提交进行硬编码。抱歉,我可能应该更具体一些。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-24
  • 2010-10-10
  • 1970-01-01
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多