如果用户收到数据库中存在电子邮件的消息,我试图停止或禁用提交按钮。
我曾经尝试过,但没有运气。 jquery上没有大师。
有人说我应该使用e.preventDefault();但是我把它放在哪里?到处尝试,但要么脚本不起作用,要么用户无论如何都可以注册。
也许最好从php验证一切?只是认为使用validate插件时jQuery更好。
有任何线索吗?谢谢=)
有这个脚本:
Jquery的:
$("#email").keyup(function (e){
clearTimeout(x_timer);
var e_mail = $(this).val();
if (e_mail.length > 4) {
x_timer = setTimeout(function(){
check_email_ajax(e_mail);
}, 1000);
}
});
function check_email_ajax(e_mail){
$("#email-result").html('<img src="../cms/assets/images/loading.gif" width="20px" height="20px" />');
$.post('ajax/register.ajax.php', {'email':e_mail}, function(data) {
$("#email-result").html(data);
});
}
PHP:
if(isset($_POST["email"])) {
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
die();
}
$email = filter_var($_POST["email"], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_HIGH);
$statement = $link->prepare("SELECT email FROM FF_Users WHERE email=?");
$statement->bind_param('s', $email);
$statement->execute();
$statement->bind_result($email);
if($statement->fetch()){
die('<i class="fa fa-times-circle" style="color:red;" aria-hidden="true"></i> <small>(taken)</small>');
}else{
die('<i class="fa fa-check" style="color:green;" aria-hidden="true"></i> <small>(Yeey :-) )</small>');
}}
答案 0 :(得分:0)
您可以使用button type="button"
完美地使用白名单提交按钮。我想你正在寻找这样的东西:
function check_email_ajax(e_mail){
$("#email-result").html('<img src="../cms/assets/images/loading.gif" width="20px" height="20px" />');
$.post('ajax/register.ajax.php', {'email':e_mail}, function(data) {
$("#email-result").html(data);
var result= $("i").attr("id")
if (result==red){
//If this is the result you stay on the page and user see the red message :)
}
if (result==green){
//If result is green I imagine you want to go where the action in form tag says, so delete action from the form, you can simply redirect where you want:
url = "your-file.php"
$(location).attr("href", url)
}
});
}
为图标添加id:
if($statement->fetch()){
die('<i class="fa fa-times-circle" id="red" style="color:red;" aria-hidden="true"></i> <small>(taken)</small>');
}else{
die('<i class="fa fa-check" id ="green" style="color:green;" aria-hidden="true"></i> <small>(Yeey :-) )</small>');
}}
希望它对你有所帮助。
答案 1 :(得分:0)
不确定这是否是最佳解决方案,但它可以正常工作。
<input id="submit" type="submit" value="Submit">
如果找到电子邮件:
echo '<script> $(document).ready(function() { $("#submit").attr("disabled", "disabled"); }); </script>';
如果找不到电子邮件:
echo '<script> $(document).ready(function() { $("#submit").removeAttr("disabled"); }); </script>';
它有效: - )