适用于Chrome,但不适用于Safari——这是一个隐藏的DIV,只在提交带有所有必需字段的表单时显示
Works in Chrome but not Safari -- a hidden DIV to only show on submission of form with all required fields
我在这个网站上创建了一个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中使用常规表单,最后重新加载页面。在我的案例中,页面交互很重,请求一个报告,这样用户就不介意在服务器端重新加载一个可能需要几秒钟的操作。
相关文章:
- AddEventListener适用于浏览器,但不适用于Android
- 查找仅适用于原始图像的图像放大算法的名称
- 如何在category.php中执行jquery,这应该适用于类别wordpress中的每个帖子
- Web编程,简单但适用于机器人项目
- JavaScript不适用于internet explorer和Firefox,但适用于谷歌
- Jquery事件处理程序仅适用于匿名函数
- jQuery调整大小函数只适用于窗口
- 火灾在卸载前确认警报仅适用于外部站点
- EmberJS-适用于各种模型的适配器动态名称空间
- Facebook共享链接适用于用户,但不适用于粉丝页面管理员
- jQuery-适用于移动设备的多级菜单
- 循环中的切换脚本只适用于第一次迭代
- 为什么setTimeout适用于无休止的递归调用
- 我未保存的更改指令需要适用于具有不同名称的所有表单
- 适用于多种浏览器的Selenium-需要能够执行javascript的webDriver
- Sails.js/Waterline.add()和.remove()仅适用于第二次调用
- javascript文档.提交并非适用于所有浏览器
- 制作表单's onsubmit仅适用于特定提交
- JQuery验证仅适用于提交的表单中的第一个元素.[打算验证所有内容]
- jQueryAjax请求仅适用于单个表单提交