【问题标题】:How does throwing an error on submit allow the form to POST提交时抛出错误如何允许表单发布
【发布时间】:2016-09-10 21:58:17
【问题描述】:

我有一个多步骤表单,它逐步使用 POST 请求将状态传递给每个控制器操作。

新建 > 预览 > 签出 > 创建

Preview 和 Checkout 是 POST 请求,不会影响数据库,因此重新提交表单是完全可以的。

我期待:
1. 阻止默认提交以运行一些 javascript 验证
2.验证后提交表单并允许浏览器来回访问

在收听提交事件时,我尝试使用 e.preventDefault() 和 e.submit(),但是,这不允许在使用浏览器按钮时重新提交表单。

但是,如果抛出错误,表单会提交并允许使用浏览器的来回按钮。

如何在不引发错误的情况下获得此功能?

$('#new_post').on("submit", function(e) {
    throw new Error();
    // this allows for form submission and back and forth button functionality
}

【问题讨论】:

    标签: javascript jquery html ruby-on-rails post


    【解决方案1】:

    只需使用preventDefault() 方法

    HTML

    <form name="form" onsubmit="validate();"> 
    

    脚本

    function validate()
    {
      if (!validation) { // If the form is not correct
          event.preventDefault();
      } else {
          // Submit the form
      }
    }
    

    【讨论】:

    • 感谢您的回复!但是,我尝试过,在此表单提交中,它不允许来回浏览器功能。
    • @ebbflowgo 尝试替换“event.preventDefault();”到“return true”,并在 else 语句中写入“return false”。
    • 我真的不明白“使用浏览器按钮”是什么意思,您正在提交表单,对吧?线索是这样的,当用户提交表单时,如果它无效,则表单实际上并没有提交。但是,请尝试替换“validate();”在表单中使用“return validate();”
    • 在提交表单并将我带到下一页后,我希望用户能够使用浏览器按钮来回切换,每次都重新提交帖子
    • 很奇怪,通常当我提交一个帖子请求时,我可以单击浏览器的“返回”按钮并再次提交表单。我真的很抱歉,可能是因为我不是以英语为母语的人,我不明白你的意思。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    相关资源
    最近更新 更多