【问题标题】:<form> with just one <input> GET automatically<form> 只有一个 <input> 自动获取
【发布时间】:2014-06-29 13:12:47
【问题描述】:
<form id="login_form">
    <input type="text" name="forgot_email" placeholder="Email">
    <button id="forgot_button" type="button">Send</button>
</form>

这是我的表单,它不打算发送到任何地方,不是 POST 或 GET,只是一个表单。 POST 由我的 jquery $.post 函数处理。 但是,当我在 INPUT 中单击 ENTER 时,它就像 GET 到同一页面一样。 URL 更改为“localhost/xxx.php?forgot_email="

这只发生在只有一个输入字段而不是多个输入字段的情况下,但在这里我只想要一个输入字段而不是 GET 到同一页面...

有没有办法解决这个问题..?我现在很困惑,这是简单的 HTML。 (我的 jquery 没有问题,禁用 jquery 时的行为方式相同)

【问题讨论】:

  • 我不认为该表单会通过type="button" 按钮提交,无论有多少输入。
  • @TilwinJoy -“当我在 INPUT 中单击 ENTER 时”这将提交表单。在这里试试:jsfiddle.net/x7yCZ
  • 我稍后用我的 Jquery 解决了这个问题,问题是当我在输入中单击 enter 时,它会使用输入的属性值将 get 函数发送到同一页面。
  • @JaredFarrish 哎呀。很好的收获。
  • 您需要阻止表单上的submit

标签: html input get


【解决方案1】:

用提交按钮替换您的按钮,并将您的 JavaScript 绑定到表单的 submit 事件而不是按钮的 click 事件。无论用户使用哪种方法触发表单,您的 JS 都会触发。

确保您 prevent the default action 提交事件,这样浏览器就不会加载新页面。

【讨论】:

  • 不会onsubmit="return false; 阻止提交..?
  • @TilwinJoy — 会的,但这是一个肮脏的黑客行为。最好处理提交具有有用行为的表单的尝试。
【解决方案2】:
<form id="login_form" onsubmit="return false;">
    <input type="text" name="forgot_email" placeholder="Email">
    <button id="forgot_button" type="button">Send</button>
</form>

这将避免您的表单被发送到服务器。

【讨论】:

  • 帮助了我,也许可以使用
    ,但我是菜鸟 ;)
【解决方案3】:

如果使用 jquery $('button id or class').click(function(){return false;});

【讨论】:

    【解决方案4】:

    您还可以考虑将输入包装在 div 而不是 form 中,因为您没有使用它的任何功能。它还为您节省了像 Quentin 建议的那样禁用提交按钮的默认事件的工作。

    【讨论】:

      猜你喜欢
      • 2015-10-15
      • 2013-04-26
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多