JavaScript验证代码
我正在使用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
$("#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正在给服务器打电话。谢谢,非常有趣。