Form onsubmit returns false 并且仍然继续提交表单

Form onsubmit returns false and still continues submitting the form

我正在使用 php5.6 并打印 html 并尝试获得确认提示以使用 JS。从 webpage 订购产品时,它应该询问用户是否确定已下订单并且 he/she 在“确定”后继续结帐。已取消以继续购物或更改个人信息。

提示有效,if(!conf) 被执行并且页面被重定向到顶部,但它仍然提交表单并在取消时创建订单。这是代码,如果重要的话,它会包含在其他文件中。在Whosebug上搜索了一段时间,没发现这种问题。尝试将 'onclick' 放入按钮,但情况更糟,出现了一些错误。

ob_start();
    ?>

    <script type="text/javascript">
        function continueToPayment() {
            var conf = confirm("<?php echo SQL::Translate('payment_confirm_text') ?>");
            if(!conf) {
                window.location.href = '#';
                return false;
            }
            else{
                return true;
            }
        }
    </script>

    <?php
    print "<form onsubmit='return continueToPayment()' action='" . SQL::Table("Pages")->Href("thank_you") . "?pm=cash&ord=$next_reference_number' method=\"POST\">";
    $amount = number_format((($_SESSION['sc_data']['final_total'])/100),2,".","");
    print "<input type='hidden' name='action' value='send_cash_order'>";

    echo ReturnOrderSubmitInfoHtml();

    print "<button type='submit' id='send_order' class='pc-btn pc-btn-sc'>" . SQL::Translate(PrintPaymentText('cash')) . "</button>";
    print "<br/>";

    print "</form>";

    $form = ob_get_clean();

在表格部分应该是onsubmit='continueToPayment(event)'

然后在函数中您需要使用 event.preventDefault() 方法停止默认表单行为。

function continueToPayment (event) {
  var conf = confirm("<?php echo SQL::Translate('payment_confirm_text') ?>")
  if (!conf) {
     window.scrollTo(0, 0)
     event.preventDefault()
     return false
  }
  // else case unnecessary
}

感谢大家对我的问题的贡献!我已经解决了,所以问题是已经有一个 JS 文件在检查是否接受术语,我试图将 js 放入 php,这显然被该 js 文件覆盖了。我放

     var conf = confirm("example");
         if(!conf) {
             window.scrollTo(0, 0);
             return false;
        }

在那里,它奏效了。已经有一个 event.preventDefault()。 window.scrollTo(0, 0) 与 window.location.href = '#' 的作用相同。无论如何,现在我只需要担心翻译和更改其他文件而不是用现金支付。