适用于Chrome,但不适用于Safari——这是一个隐藏的DIV,只在提交带有所有必需字段的表单时显示

Works in Chrome but not Safari -- a hidden DIV to only show on submission of form with all required fields

本文关键字:适用于 提交 显示 表单 字段 隐藏 Safari 不适用 Chrome 一个 DIV      更新时间:2023-09-26

我在这个网站上创建了一个HTML5联系人表单,作为结账系统的一部分:http://www.organik-music.com/.

我已经设置好了,当用户提交表单时,会显示一个以前隐藏的DIV。这个DIV包含最终付款按钮。基本上,我希望买家在完成付款之前提供一些信息。付款是通过第三方插件进行的,该插件将数据发送到PayPal,该网站是一个自定义的Wordpress安装。

在Chrome和其他浏览器中,只有在填写了所需字段的情况下才会显示此DIV。这些必填字段标记为required="true"。然而,在Safari中,它一直不起作用,所以我在表格中添加了以下内容:

        <script>
var form = document.getElementById('datacapture');
form.noValidate = true;
form.addEventListener('submit', function(event) { // listen for form submitting
    if (!event.target.checkValidity()) {
        event.preventDefault(); // dismiss the default functionality
        alert('Please complete all required fields'); // error message
    }
}, false);
</script>

虽然这会创建一个弹出框,提示用户完成表单,并且在将数据发送到操作php之前需要这样做,但无论表单是否已正确完成,此时也会显示隐藏的DIV。

我为我的隐藏DIV(ID"complete")使用的显示/隐藏脚本如下:

<script>
function showHide() {
var div = document.getElementById("complete");
if (div.style.display == 'none') {
 div.style.display = '';
}
else {
div.style.display = 'block';
} }
<script>

因此,基本上,我希望Safari中的功能与我目前在Chrome等中获得的功能相同——隐藏的DIV"完整"只有在成功提交表单时才会显示,包括所有必需的字段。我对我可以使用的邮件形式有点限制,因为它需要与插件一起使用。

非常感谢!:)

我发现在Safari中添加或更改url路径的div上尝试假点击会导致帧加载中断问题或其他错误。苹果似乎将Safari中任何凌驾于预期行为之上的行为都解释为安全违规。我对Safari的解决方法是在post中使用常规表单,最后重新加载页面。在我的案例中,页面交互很重,请求一个报告,这样用户就不介意在服务器端重新加载一个可能需要几秒钟的操作。