检查用户名是否已存在 - 仅适用于onclick

时间:2013-12-24 13:48:44

标签: javascript jquery

我正在尝试检查注册页面上是否已存在用户名和电子邮件。

我有这个javascript代码:

var nombre = document.getElementById("username").value;
var email = document.getElementById("email").value;
var errorNombre = document.getElementById("erno");
var errorEmail = document.getElementById("erem");

if (nombre == null || nombre.length == 0 || /^\s+$/.test(nombre)) {
    errorNombre.innerHTML = "<font color='red' face='century gothic'>Debe introducir un nombre de usuario</font>";
    return false;
} else {

    $.ajax({
        type: 'POST',
        data: {
            email: email
        },
        url: 'consulta5.php',
        success: function (response) {
            if (response != 0) {
                errorEmail.innerHTML = "<font color='red' face='century gothic'>Correo ya registrado</font>";
                return false;
            } else if (response == 0) {
                //desde aquí
                errorEmail.innerHTML = "";

                $.ajax({
                    type: 'POST',
                    data: {
                        nombre: nombre
                    },
                    url: 'consulta4.php',
                    success: function (response) {
                        if (response != 0) {
                            errorNombre.innerHTML = "<font color='red' face='century gothic'>Nombre de usuario no disponible</font>";
                            return false;
                        }
                    }
                });
            }
        }
    });
} 

如果它是$( "#enviar" ).live("click", function(){的一部分,它的效果非常好,但问题是,如果一切正常,表单就不会被发送。但是,如果我尝试使用on submit = "return validate ()"只有javascript的第一部分可以使用,并且只要邮件存在与否,就会发送表单(但是当有空格时则不会发送)。

我真的很感激一些帮助,因为我对如何完成这项工作一无所知!!

谢谢:)

1 个答案:

答案 0 :(得分:0)

表单未提交,因为您从未说过它。但是,如果您将最内层的成功函数更改为:

success: function (response) {
    if (response != 0) {
        errorNombre.innerHTML = "<font color='red' face='century gothic'>Nombre de usuario no disponible</font>";
        return false;
    }
    else {
        $("#yourForm").submit();
    }
}

然后我相信你的逻辑会很健全。

尽管如此,我还是会推荐其他一些变化。

首先,考虑重新设计验证php,以便在一次调用中检查这两个字段(名称和电子邮件)。您可以使用单个响应值来指示哪个(如果有)失败。如果你想要数字响应代码,那么你可以做一些简单的事情,对于所有人来说都很简单,1对于坏电子邮件,2对于坏名称,3对于两者中的错误。实际上没有必要进行两次连续的旅行来验证没有相互依赖性的数据。

其次,考虑使用CSS!这里没有必要使用<font>。在errorNombreerrorEmail上添加一个样式(如果必须)或一个类(首选)。如果可能在这些位置显示多个错误,则只需动态设置错误文本。如果这些是唯一的错误,你甚至不需要 - 将错误信息放在HTML中,只是动态显示或隐藏元素。