即使数据库中存在电子邮件,表单也会被提交.如何清除电子邮件字段并要求用户输入不存在的电子邮件 ID



以下代码仅在电子邮件存在时提醒用户。我应该如何防止用户提交表单 这是视图创建.php

$(document).ready(function()
{
$('#email').change(function()
{
var email = $("#email").val();
var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
if(email!='')
{
$.ajax({
type:"POST",
url: "<?php echo site_url('welcome/email_availabilty'); ?>",
data:{ email:email },
success:function(data)
{   
if(data)
{
alert('Email Already Exists');
}
else
{
alert('Email Available');
} 
},
return false;
error: function(e){
console.log(e);
}
});
}
});
});

欢迎控制器.php

function email_availabilty()
{
$res=$_POST['email'];
$this->load->model('queries');
$data=$this->queries->email_available($res);
echo $data;
}

这是模型查询.php

public function email_available($res)  
{
$data=$this->db->query("select email from tbl_posts where email='$res'");
if($data->num_rows() >= 1)
{
return TRUE;
}
else
{
return FALSE;
}
}

请告诉我,如果电子邮件已经存在,如何防止用户提交表单。

谢谢你们,伙计们! 我有解决方案 通过在后面添加"$("#email").val('');'

警报("电子邮件已存在");

发生这种情况是因为您没有通过将event.preventDefault()returnfalsetrue一起使用来阻止浏览器的默认行为。

function [...](e) {
e.preventDefault();
[...]
}

由于 AJAX 代码中的随机return false;,您还应该存在语法错误。

改变

success:function(data) {   
if(data) {
alert('Email Already Exists');
} else {
alert('Email Available');
} 
},
return false; <---- Here...

success:function(data) {   
if(data) {
alert('Email Already Exists');
} else {
alert('Email Available');
}
return false; <---- Here...
},

如果电子邮件已经存在,您应该使用 jQuery 禁用表单的Send按钮。

更好的是,只有在电子邮件不存在时才应启用它。

最新更新