【问题标题】:Javascript Confirm continues regardless of user answer无论用户回答如何,Javascript Confirm 都会继续
【发布时间】:2015-07-02 16:29:04
【问题描述】:

我有一个用于我的 Django 网站代码的 html 模板。模板中有几个表格。其中两个表单是日期字段,如果用户填写它们,我会在提交时激活一个 confirm 弹出窗口。如果用户单击“,我希望弹出窗口退出表单提交并返回页面”取消”,并在用户单击“确定”时继续提交表单。

确认弹出窗口正确显示,但无论用户点击什么,表单提交都会继续。如果用户单击“取消”,如何更改它以退出表单提交?

Javascript 看起来像这样:

<script type="text/javascript">
    var checkFields = ["SPAN_START","SPAN_END"];
    function checkForm( theForm ) {

      for (i in checkFields ) {
        var fieldName = checkFields[ i ];
        var theField = theForm[ fieldName ];

        if ( theField.value ) {
          var retVal = confirm("Are you sure you want to specify a date?");
          if (retVal == true){
            theField.submit()
            return true;
          } else {
            return false;
          }
        }
      }
    }
</script>

使用它的html是这样的:

<form action="/InterfaceApp/Nominal_Request/" method="post" class="form" onsubmit="checkForm( this )">
  {% csrf_token %}
  <div class="panel-body text-center">
    {% bootstrap_form form_span_start %}
    {% bootstrap_form form_span_end %}
    {% buttons %}
    <button type="submit" class="btn btn-primary center-block" value="Submit" name="Range">
      {% bootstrap_icon "fire" %} Generate Range of Requests
    </button>
    {% endbuttons %}
  </div>
</form>

如果用户点击“取消”,谁能告诉我如何取消表单的提交??

非常感谢。

【问题讨论】:

  • @adeneo 成功了!感谢您的简单修复:)

标签: javascript django forms


【解决方案1】:

你必须将函数的值返回给内联事件处理程序

onsubmit="return checkForm( this )"

最好您根本不使用内联事件处理程序,而是使用addEventListener

【讨论】:

  • e.preventDefault(); 也是必需的,因为前者只是一个约定。
  • @BertPeters - 为什么函数返回 false 时需要 preventDefault
  • 我几乎没有比这个问题的公认答案更好的措辞了:stackoverflow.com/questions/18971284/…
  • 我假设你的意思是给定的答案,内联事件处理程序,但如果使用 addEventListener 你是对的,那么将需要 preventDefault 而不是返回 false。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
相关资源
最近更新 更多