【问题标题】:Enter sending HTML form with no submit输入不提交的发送 HTML 表单
【发布时间】:2011-03-29 17:36:51
【问题描述】:

我将表单上的 type="submit" 替换为 type="button",以防止在用户按下 Enter 时提交表单。这会阻止 enter 在所有浏览器中提交表单吗?

【问题讨论】:

  • 为什么要这样做?对用户来说可能很烦人......
  • 因为:1- 他们必须填写某些字段才能使用提交。 2-表单基于令牌..添加输入应添加令牌,而不是提交整个表单。所以它实际上对用户有帮助
  • 这并不能减轻这种糟糕的可用性实践的事实。在这种情况下你应该做的是使用 Javascript 来做这两个。

标签: html forms cross-browser browser


【解决方案1】:

某些浏览器在按下回车后仍会自动提交。如果您确实需要一些明显的功能,您可能宁愿使用 onSubmit 事件处理程序实现自己的过滤。

然后,您可以通过实际调用 Javascript 中的 submit 方法来强制提交表单。当然,您需要设置一个特定的标志以允许您的提交通过这个时间。类似于(使用 jQuery)

//flag definition
var form_is_ready = false;

//event handler for the form submission
$('#your-form-id').submit(function() {
  if (!form_is_ready) {
    return false;
  }
});

//function you have to call to actually submit the form
function do_submit() {
  form_is_ready = true;
  $('#your-form-id').submit();
}

这只是快速编写的一段代码。您应该根据自己的需要对其进行调整。

【讨论】:

    【解决方案2】:

    这是一个糟糕的可用性决定,应该避免。

    【讨论】:

    • 查看我上面的评论,解释为什么不使用 enter 提交是有意义的
    • @babonk 这没有意义,如果我试图使用你的表格会激怒我
    • 这很有意义......尤其是在非常非标准的形式中。话虽如此,大多数表单应该尽可能使用默认功能。
    【解决方案3】:
    猜你喜欢
    • 2021-10-15
    • 2013-02-24
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    相关资源
    最近更新 更多