【问题标题】:Conflict between action and onsubmit of a form操作与表单提交之间的冲突
【发布时间】:2018-07-08 09:49:37
【问题描述】:

我正在用 python Flask 开发一个应用程序。我有一个表单,单击该表单会触发一个动作以执行 app.py 中的一部分。但是我希望该按钮在 24 小时内只能点击一次。所以我尝试实现 onsubmit 事件。但是由于 onsubmit 首先被执行,所以我在与 app.py 中的代码相关的操作部分被执行时遇到了问题。

1)这是表单代码:

 <form name="Update" action="/update" method="post">
    <input type="submit" id="myBtn" value="Update" onsubmit="myFunction()">
 </form>`

2)app.py中的action='/update"触发了这部分:

@app.route('/update',methods=['POST'])
def Update():
 ....
 ....
 ....
return render_template('index.html', output=output)  

3)我尝试为表单提交启用超时导致冲突的代码。

<script>
  function myFunction() 
  {
    document.getElementById("myBtn").disabled = true;
    setTimeout(function()
    {
      document.getElementById("myBtn").disabled = false;
    }, 200000);
  }
</script>

因为 document.getElementById("myBtn").disabled = true;首先击中动作部分没有被执行。请提供有关如何处理此问题的帮助。提前致谢。

【问题讨论】:

    标签: javascript forms action settimeout onsubmit


    【解决方案1】:

    您可以尝试将“onsubmit”放置到表单而不是输入。

    <form name="Update" action="/update" method="post" onsubmit="myFunction()">
        <input type="submit" id="myBtn" value="Update">
    </form>
    

    js部分

    <script>
      function myFunction() 
      {
          return true; /// form execution goes on
          return false; /// form execution stops
      }
    </script>
    

    【讨论】:

    • 感谢您的回复。我尝试在表单中放置“onsubmit”,但我的 js 部分应该是什么,以便使按钮在 24 小时内只能点击一次。
    • 我也会考虑的。然而,作为第一印象,JS 方法并不可靠,因为它是在客户端。例如,如果您在客户端查看时间,那将是他们的当地时间..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多