我将从我正在尝试做的事情开始。
我创建了一个“忘记密码”系统,用户可以在其中输入他们的电子邮件地址,并且(如果正确)他们将收到一封带有重置链接的电子邮件。
表单页面中有一小部分 ajax 用于检测输入的电子邮件是否在数据库中。如果数据库中确实存在电子邮件,则表单将颜色更改为绿色并启用提交按钮。如果未检测到电子邮件,表单将保持红色并且提交按钮被禁用。
问题是当输入电子邮件地址时,keyup 事件似乎发生在用户输入的字符比正确的电子邮件多一个字符时(基本上如果hello@123.com在我的数据库中,他们将不得不输入hello@123. com1用于启用提交)
这是我的 JSFiddle,除了 ajax 工作之外的所有内容。
以下是 ajax 文件本身的示例:
<?php
session_start();
$Email = $_POST['email'];
//Parse ini file containing database information
$databaseInfo = parse_ini_file("optiMizeWebReport.ini", true);
global $con;
//Connect to database
$con = @mysqli_connect($databaseInfo['optiMizeDatabaseConnection'] ['WebServer'],$databaseInfo['optiMizeDatabaseConnection']['Username'], $databaseInfo['optiMizeDatabaseConnection']['Password'], $databaseInfo['optiMizeDatabaseConnection']['DBName']);
//Check connection and output error if invalid
if(!$con)
{
die('Connect Error ('. mysqli_connect_errno() .') '.mysqli_connect_error());
}
//Execute query
$result = mysqli_query($con, "SELECT COUNT(*) FROM login WHERE Email='$Email'")
or die("Error: ".mysqli_error($con));
//Initialize
$emailMatch = array();
//Extract
while($emailMatch[] = mysqli_fetch_array($result))
print_r($emailMatch[0][0]);
?>
如果有任何其他信息可以提供帮助,请告诉我。谢谢。
编辑:
由于似乎仍然没有快速修复/答案,我制作了一个简短的视频,准确显示发生了什么。你可以在这里看到它:https ://www.youtube.com/watch?v=P-2Gz5b4ek8