使用ajax登录验证或注册,第一次点击登录按钮无反应,第二次点击才能进去

server/2025/3/20 4:12:27/

我的问题正如标题所见,点击一次无效,再点一次就好了。

这是我原来的代码:

<div class="login-form"><p>New user?<a href="register.html">Register here!</a></p><form><div class="form-text"><input type="text" id="username" class="text" value="USERNAME" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'USERNAME';}" ><input type="password" id="password" value="Password" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Password';}"></div><input type="submit" id="submit" value="登录" ></form>
</div>

这是我修改后的代码:

<div class="login-form"><p>New user?<a href="register.html">Register here!</a></p><div class="form-text"><input type="text" id="username" class="text" value="USERNAME" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'USERNAME';}" ><input type="password" id="password" value="Password" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Password';}"></div><input type="submit" id="submit" value="登录" >
</div>

可以看到,我把form标签删了。

产生这个问题的原因是:我们点击登录后,form会默认提交表单,服务器响应后会刷新页面,根本就没有执行我们写的 JavaScript  代码。

如果页面中有一些初始化的 JavaScript 代码或者事件绑定逻辑依赖于页面加载完成后执行,而第一次点击提交时,这些逻辑还未完全准备好,就可能导致第一次点击无效。第二次点击时,页面已经完成了初始化,所以点击有效。

这个结论从下面的例子也能证明:

就是我先故意没写用户名和密码提交一次,提交这一次后,下一次再提交就是有效的。原因其实就是我们故意提交的那次错误,页面完成了初始化。

还有,如果我们提交了一次,以后无论提交多少次都行,这也能证明了是因为没有初始化而导致我们第一次提交没有效果。

结论:form标签的锅,以后使用的时候要多加小心。


http://www.ppmy.cn/server/176417.html

相关文章

芯谷78L33L稳压芯片详解:特性、应用与注意事项

在电子电路设计领域&#xff0c;稳压芯片是确保电路稳定运行的关键元件之一。芯谷78L33L作为一款经典的三端稳压器&#xff0c;凭借其卓越的性能和广泛的应用场景&#xff0c;赢得了众多工程师的青睐。本文将深入剖析芯谷78L33L稳压芯片的特性、典型应用以及使用过程中的注意事…

Vite项目中vite.config.js中为什么只能使用process.env,无法使用import.meta.env?

关键要点 研究表明&#xff0c;Vite 配置文件&#xff08;vite.config.js&#xff09;运行在 Node.js 环境中&#xff0c;因此只能使用 process.env 访问环境变量&#xff0c;而 import.meta.env 专为客户端代码设计&#xff0c;在配置文件中不可用。于建议在 vite.config.js …

【从零开始学习计算机科学】信息安全(七)网络攻击

【从零开始学习计算机科学】信息安全(七)网络攻击 网络攻击系统漏洞扫描技术系统漏洞分类漏洞扫描概述漏洞扫描系统分类扫描内容扫描技术端口扫描工具网络攻击概述网络攻击分类网络攻击的手段口令攻击漏洞攻击IP/TCP 欺骗攻击ARP欺骗攻击缓冲区溢出攻击拒绝服务攻击(DOS)碎…

EmbodiedSAM:在线实时3D实例分割,利用视觉基础模型实现高效场景理解

2025-02-12&#xff0c;由清华大学和南洋理工大学的研究团队开发 一种名为 EmbodiedSAM&#xff08;ESAM&#xff09;的在线3D实例分割框架。该框架利用2D视觉基础模型辅助实时3D场景理解&#xff0c;解决了高质量3D数据稀缺的难题&#xff0c;为机器人导航、操作等任务提供了高…

element-ui progress 组件源码分享

progress 进度条组件源码分享&#xff0c;主要从以下两个方面&#xff1a; 1、progress 组件页面结构。 2、progress 组件属性。 一、组件页面结构。 二、组件属性。 2.1 percentage 百分比&#xff08;必填&#xff09;&#xff0c;类型为 number&#xff0c;可选值 0-100…

JVM常用概念之信任非静态final字段

问题 JVM可以信任非静态的final字段吗? 基础知识 编译器通常信任static final字段&#xff0c;因为已知该值不依赖于特定对象&#xff0c;并且已知它不会改变。那对于静态常量实例的final字段也使如此吗? class M {final int x;M(int x) { this.x x; } }static final M …

网络安全运维应急响应与溯源分析实战案例

在日常运维过程中&#xff0c;网络安全事件时有发生&#xff0c;快速响应和精准溯源是保障业务稳定运行的关键。本文将通过一个实际案例&#xff0c;详细解析从发现问题到溯源定位&#xff0c;再到最终解决的完整流程。 目录 一、事件背景 二、事件发现 1. 监控告警触发 2.…

Redis的IO多路复用机制:高效的网络通信设计

在高并发、高性能的应用中&#xff0c;如何有效地管理和处理大量的客户端请求是一个至关重要的问题。Redis作为一个高性能的内存数据存储系统&#xff0c;面对大量并发客户端请求时&#xff0c;需要具备良好的网络通信能力。在Redis的设计中&#xff0c;IO多路复用机制是其核心…