JavaScript验证代码

JavaScript验证代码,javascript,Javascript,我正在使用JavaScript验证一些表单字段。我的问题是关于里面的代码 $("#alias").keyup(function(){ 这是我的验证脚本: <script type="text/javascript"> $(document).ready(function(){ console.log("principio"); // Setup the ajax indicator // Ajax activity indicator bound to ajax

我正在使用JavaScript验证一些表单字段。我的问题是关于里面的代码

$("#alias").keyup(function(){
这是我的验证脚本:

<script type="text/javascript">

$(document).ready(function(){
console.log("principio");


// Setup the ajax indicator



    // Ajax activity indicator bound to ajax start/stop document events
$(document).ajaxStart(function(){ 
  $('#ajaxBusy').show(); 
}).ajaxStop(function(){ 
  $('#ajaxBusy').hide();
});

//control de alias
    $("#alias").keyup(function(){


        var ID=$("#alias").val();
        var REST=$("#rest").val();
        var ACTUAL = "<?php echo $row_Recordset1['alias_mesero']?>";

        $.post("check_username_edit.php", { username: ID, rest: REST, actual: ACTUAL},

                function(result){
                    console.log(result);
                    //if the result is 1
                    if(result == 1){

                        document.getElementById('mensajealias').innerHTML ="Nombre corto disponible";
                          document.getElementById('boton').style.visibility='visible'; // hide 
                             document.getElementById('mensajeboton').innerHTML ="Ahora puede insertar los datos";

                    }
                    else if(result == 2){

                        document.getElementById('mensajealias').innerHTML ="No ha modificado el nombre corto";
                          document.getElementById('boton').style.visibility='visible'; // hide 
                             document.getElementById('mensajeboton').innerHTML ="Ahora puede insertar los datos";

                    }
                    else if(result == 0){

                          document.getElementById('mensajealias').innerHTML ="Nombre corto no disponible, ya existe";
                           document.getElementById('boton').style.visibility='hidden'; // hide 
                             document.getElementById('mensajeboton').innerHTML ="No se puede insertar hasta que no modifique los datos";

                    }
            });



    });

//control de rest
    $("#rest").change(function(){


        var ID=$("#alias").val();
        var REST=$("#rest").val();
        var ACTUAL = "<?php echo $row_Recordset1['alias_mesero']?>";

        $.post("check_username_edit.php", { username: ID, rest: REST, actual: ACTUAL},

                function(result){
                    console.log(result);
                    //if the result is 1
                    if(result == 1){

                        document.getElementById('mensajealias').innerHTML ="Nombre corto disponible";
                          document.getElementById('boton').style.visibility='visible'; // hide 
                             document.getElementById('mensajeboton').innerHTML ="Ahora puede insertar los datos";

                    }
                    else if(result == 2){

                        document.getElementById('mensajealias').innerHTML ="No ha modificado el nombre corto";
                          document.getElementById('boton').style.visibility='visible'; // hide 
                             document.getElementById('mensajeboton').innerHTML ="Ahora puede insertar los datos";

                    }
                    else if(result == 0){

                          document.getElementById('mensajealias').innerHTML ="Nombre corto no disponible, ya existe";
                           document.getElementById('boton').style.visibility='hidden'; // hide 
                             document.getElementById('mensajeboton').innerHTML ="No se puede insertar hasta que no modifique los datos";

                    }
            });



    });



});

</script>
如果用户一个字符一个字符地输入文本,验证就像一个符咒一样进行。 但是我发现,如果用户很快输入文本,那么有时验证不会返回正确的值

我想我可以使用changefunction而不是keyupfunction,但我更希望用户不必离开字段进行验证


欢迎提供任何建议。

有两点需要考虑: 1老式的键控向上键控向下事件不可靠。如果使用备份验证,则始终需要从后端进行备份验证。如果用户快速输入,将触发很少的keyup事件,但您甚至不确定先触发哪个事件。
2Morden浏览器支持输入等新事件,如果可能,您应该使用新事件。

我在搜索框上使用了这种方法,我只想在用户短时间停止键入时执行搜索:

var delay = (function () {
    var timer = 0;
    return function (callback, ms) {
        clearTimeout(timer);
        timer = setTimeout(callback, ms);
    };
})();

$("#alias").on('propertychange keyup input paste', function () {
    delay(function () {
        //validate
    }, 1000);
});

当这些事件触发时,它会启动一个计时器1秒,并且只有在计时器过期时才执行验证。如果收到任何新事件,计时器将重置为1秒。此事件处理程序还可用于剪切和粘贴输入。

这是否有帮助:@Farax,谢谢。我现在会检查它。你可以验证每一个密钥,但你仍然应该在提交前验证,以防有一些快速输入,而你在提交前没有完成验证。此外,您必须始终在服务器上进行验证,因为客户端验证实际上只是一种UI糖类,可以帮助用户了解错误所在,但始终可以忽略。无论前端浏览器是否进行验证,您都需要后端服务器验证。句号,你完全正确。他的验证已经在后端了。相反,我们可以称之为:备份验证?验证已经在后端了吗?这是Javascript;它在浏览器中运行?如果你读了代码,他每次都调用后端函数来验证,我觉得。但那也不好。好吧,你想说什么就说什么。希望我没有误解$。post正在给服务器打电话。谢谢,非常有趣。