event.preventDefault() 在 Mozilla 或 IE 中不起作用

2023-12-11

我终于可以在其他浏览器中测试我的网站了(主要是在 Chrome 中构建的)。不幸的是,很多东西的功能似乎有所不同。我将从第一个问题开始:登录时,我进行 JS/jQuery 检查以确保用户名和密码匹配,失败后应停止提交。

然而,虽然它在 Chrome 和 Safari 中工作,但在 Mozilla 和 IE 中,提交仍在进行中(点击道歉页面,但仍然是我不想看到的东西)。

我试过替补event.preventDefault() for e.preventDefault() or evt.preventDefault()但它们都不起作用,表单仍然会提交(对于后两个,它也会在 Chrome 中提交)。这是我的代码,希望有任何想法:

function checkLogin()
{
    // get the variables, execute some other checks (eg, things not blank)

    // run ajax code to determine if pieces match
    $.ajax({
    type: "POST",
    url: "check_login.php", 
    data: {'username': username, 'password': password},
    async: false,
    success: function(result) 
    {
      if (result == 1)
      {
        $('#loginoff').html("Invalid username/password");
        e.preventDefault();
        return false;
      } 
      else
      {
        $('#loginoff').html("");
        return true;
      } 
    }
    });
}

请注意,当用户名和密码不匹配时,该函数肯定会执行并返回 1,因为在所有情况下都会出现“无效的用户名/密码”消息。

另外,如果有人对 HTML 感兴趣:

<form action="login.php" method="post" onsubmit="return checkLogin()">
<!-- code for inputs, eg username -->
<input type="submit" class="btn" value="Log In"/>
</form>

我建议首先阻止该事件,然后当您希望提交表单时,使用本机提交方法执行此操作,因为它绕过了 jQuery。

var form = document.getElementById("formid");
$(form).submit(function(e){
    e.preventDefault();

    $.ajax({
        type: "POST",
        url: "check_login.php",
        data: {
            'username': username,
            'password': password
        },
        //async: false,
        success: function (result) {
            if (result == 1) {
                $('#loginoff').html("Invalid username/password");
            } else {
                $('#loginoff').html("");
                form.submit(); // note, form is a form NODE, not a jQuery object containing a form.
            }
        }
    });

});

这也允许您删除async: false这总是一件好事(除了网络工作者之外)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

event.preventDefault() 在 Mozilla 或 IE 中不起作用 的相关文章

随机推荐

  • 在 AVPlayer 框架中播放 3gp 视频的已知问题?

    AVPlayer 无法在设备上播放 3gp 文件是否存在任何已知问题 mp4 文件可以正常播放 但无法从设备上的 URL 播放 3gp 文件 Thanks 如果重要的话 我使用的是 iOS 9 Swift 3 AVPlayer 或 AVPl
  • 使用手动 where 语句具有多个更新条件的 Codeigniter 模型

    我在模型中有返回数据的代码 this gt db gt select title content date where name Joe AND status boss this gt db gt where where query thi
  • SQL Server - 如何选择每个用户的最新记录?

    我正在尝试执行一个 SQL 命令 该命令应该绘制进入数据库的最后一行 基本上 当用户提交最后一个帖子 就像在这个论坛中 时 它会将用户重定向到一个页面 其中包含他的帖子标题 帖子段落以及用户名和帖子提交时间等数据 我开始研究声明 SELEC
  • PHP使用相同的变量后通过引用传递错误

    看一下这段代码 帮助我理解结果 x array hello beautiful world y array bye bye world harsh foreach x as n gt v v DONT CHANGE foreach y as
  • MS SQL Server:以小时和分钟的精度计算年龄

    我需要一个 SQL 函数来计算年龄 它必须准确并涵盖所有极端情况 由于是婴儿病房 所以30分钟是很常见的情况 我查看了其他答案 但找不到处理所有情况的答案 例如 宝宝出生于2014 04 29 12 59 00 000 现在是 2014 0
  • shell 脚本查找每个文件的文件名和行数,现在将此记录插入到 Oracle 表中

    我必须找到文件夹中可用的文件名以及每个文件行数 然后 我将获得两列数据 现在我必须将此记录插入到具有两列 col1 col2 的oracle表中 我可以写一个 shell 脚本来完成这两个任务吗 我发现自己正在写第一部分 IE wc l e
  • 我可以在 Django 中使用 XSLT 吗?

    我们使用 Django 来编写我们的新项目 我们的设计师想要使用 XSLT 编写模板 如您所知 Django 有自己的模板系统 并且我没有任何理由说明为什么设计者不能使用 XSLT 2个问题 我可以在视图中返回 XML 吗 这样做有理由吗
  • 如何正确设置d3.brush范围?

    我正在根据 Mike Bostocks 示例编写 d3 小部件http bl ocks org mbostock 1667367因此 我尝试使用预定义日期设置画笔范围 但范围矩形不适用于这些日期 var brush d3 svg brush
  • 带刻度标签的 Python PyQt4 滑块

    我是 PyQt4 的新手 我正在使用 QSlider 制作 gui 默认情况下 滑块不会显示刻度值 我搜索过 但没有找到简单的方法来做到这一点 那么是否可以或者我必须手动进行 我已经制定了一个解决方案 用于在垂直或水平方向向滑块添加标签 结
  • 如何生成临时 Zip 文件,然后在下载后自动将其删除?

    我有一个下载页面 其中有 3 个下载选项 Word Zip 和 PDF 有一个文件夹包含 doc文件 当用户单击页面上的 Zip 选项时 我希望 ASP NET 使用以下内容压缩文件夹 doc文件到临时 zip文件 然后客户端会从服务器下载
  • 在 g:remoteLink 中传递参数作为 javascript 函数的结果

    在 gsp 文件中我有 javaScript 函数 在 g remoteLink 中我喜欢使用该函数传递参数 像下面这样的东西
  • apache httpclient 4 的 UNICODE URI 编码

    我正在使用 apache http client 4 进行所有 Web 访问 这意味着我需要执行的每个查询都必须通过 URI 语法检查 我尝试访问的网站之一使用 UNICODE 作为 url GET params 编码 即 参数 srh t
  • 使用 INNER JOIN 时出现歧义错误

    我试图从 depts 表中选择 deptno dname 并将其与 emp 表连接以选择 empno 和 ename 然后我想按部门名称对它们进行分组 并按部门升序排序 当加入这两个表时 我一直觉得 deptno 不明确 但这是连接表的共性
  • JavaScript:使用 window.setTimeout 触发 CSS 转换

    这 显然 是一个更大项目的一部分 但我正在尝试触发 CS 转换setTimeout 我知道如何使用 CSS 动画 但这不仅仅是重复的过渡 当属性更改时 将发生 CSS 转换 为了我自己的目的 我使用setAttribute因为这将行为与其他
  • 跨 Java 堆的年轻部分和长期部分的大型数组分配

    是否可以在 Java 堆的年轻区域和永久区域之间分配大型数组 鉴于这些地区有自己的次区域 我认为我稍微简化了问题 我只是想了解一次分配是否可以跨越多个区域 年轻和终身 如果是 那么垃圾收集是如何完成的 因为不同区域使用的策略是不同的 我认为
  • 重新绑定 onclick、on* 事件监听器以进行调试

    我想要猴子补丁事件侦听器注册 I found 这个答案展示如何做到这一点addEventListener const nativeEventListener EventTarget prototype addEventListener Ev
  • 在 Visual Studio 中链接 DLL

    我在 Windows XP 上使用 Visual Studio C 2005 我使用 Visual Studio C 2005 创建了一个 DLL 共享库 但是 我不确定如何链接它 通常我刚刚创建了静态库 lib 我的链接方式与链接库时的方
  • 使用 Android Gradle 插件在编译前运行任务

    我有一个非常简单的build gradle文件包含以下内容 buildscript repositories mavenCentral dependencies classpath com android tools build gradl
  • IE6 和 IE7 Standalone:它们的渲染有何不同? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 这是关于 SO 的常识 参
  • event.preventDefault() 在 Mozilla 或 IE 中不起作用

    我终于可以在其他浏览器中测试我的网站了 主要是在 Chrome 中构建的 不幸的是 很多东西的功能似乎有所不同 我将从第一个问题开始 登录时 我进行 JS jQuery 检查以确保用户名和密码匹配 失败后应停止提交 然而 虽然它在 Chro