繁体   English   中英

如何在鼠标悬停时使按钮可点击

[英]How to make a button clickabled when hovered over

这个问题对你们中的许多人来说听起来很奇怪。 我需要一个不能通过点击触发的按钮。 这意味着它不会执行任何操作。 就像如果表单属性action设置为next.html之类的东西,点击不会导致它转到下一页。

当用户将鼠标悬停在按钮上时,它可以转到下一个站点。 我这样做的原因是因为机器人可以在不将鼠标悬停在按钮上的情况下提交数据。 我希望这会阻止机器人向我的网站提交任何内容。

我真的没有任何代码,但是有什么方法可以在 Javascript/jQuery 中做到这一点吗?

如果这令人困惑,请在评论中提出更多问题,我会尽力回答。

  1. 机器人搜索<form>元素
  2. 机器人查询表单的action

如果您的页面中没有表单,机器人将不会跟随您的表单action 如果这听起来很奇怪:

  • 使用 JS 创建整个表单(没有表单?没有机器人。

无论哪种方式(特别是如果您关心 noJS 访问者),您都需要验证您的表单

  1. 在服务器端(这是最重要的)
  2. 在客户端(JavaScript;如果他们忘记填写某些内容,请通知您的用户 - 错别字)


在这里你可以找到一个方法示例


为什么你的hover方法/意图不好:

  • 您只会弄乱 UI,从而造成糟糕的 UX。 而已。
  • 该表单已经存在于页面上,显示了机器人需要的所有内容。
  • 机器人不需要任何按钮来提交您的表单。
  • 一些用户可能会使用 TAB 键来聚焦提交按钮 - 因此不涉及任何悬停,只是一个无法正常工作的糟糕表单。

现在我不确定这种技术在阻止机器人方面的效果如何。 如果你仍然想试一试,我会做这样的事情:

HTML:

<form class="form" action="1.php" type="post">
  <input type="text">
  <input class="submitbutton" type="submit">
</form>

Javascript/jQuery:

var $form = $('.form'),
    $btn = $('.submitbutton');

// Disable submit button on page load
$btn.prop('disabled',true);

// Reactivate submit button on form hover
$form.hover(
  function(e){
    e.stopPropagation();
    $btn.prop('disabled',false);
  }, function(e){
    e.stopPropagation();
    $btn.prop('disabled',true);
  }
);

在 JSFiddle 上放了一个例子。

通常,单击按钮应提交表单。 如果你想强制这个问题,我认为你应该先尝试禁用按钮。

<span style="padding: 8px; background: red;"  onmouseout="this.firstChild.disabled='';"><input type="button" name="test" id="test" value="roll over me" onmouseover="this.disabled=true;"></span>

如此处的答案中所述:

Javascript:启用/禁用鼠标悬停/鼠标移出按钮

您的问题似乎是在不单击按钮的情况下导航到另一个页面。

         <html>
            <head>
            </head>
            <body>
                <button onmouseover="go()"  id="button">hii</button>
                <script>
                    var anchor=document.createElement("a");
                    var button=document.getElementById("button");
                    anchor.href="alarm2.html";
                    function go()
                    {
                        button.onmouseover= anchor.click();

                    }
                </script>
            </body>
        </html>     

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM