我在使用 jquery 验证器验证电话号码时遇到问题。因此,在我输入电话号码的表单中,我使用 jquery 的附加方法来验证电话。这是代码:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>stuff/title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/additional-methods.min.js"></script>
</head>
<body>
<script>
$(document).ready(function(e) {
var val = $('#everything').validate({
onkeyup: false,
errorClass: "req_mess",
ignore: ":hidden",
rules: {
phone: {
required: true,
minlength: 10,
phoneUS: true
}
},
messages: {
phone: {
required: "Please enter your phone number",
phoneUS: "Please enter a valid phone number: (e.g. 19999999999 or 9999999999)"
}
}
});
});
</script>
<form name="everything" id="everything" action="Private/Insert.php" method="post" style="display:none;" >
Phone Number: <input type="text" name="phone" id="phone"/>
</form>
</body>
</html>
对于电话号码列,数据库最终看起来像这样:
有时它会正确插入完整的电话号码(用红色划掉),但有时它只会插入 3 位数字。我不知道为什么。这可能与 Internet Explorer 有关吗?有没有人遇到过这个问题?有谁知道为什么会这样?如果 anyone needs it,这里是完整的 jquery 验证代码
最佳答案
您正在使用 phoneUS电话号码的验证方法,它接受以下两个输入(示例):
- 949-101-2020
- 9491012020
由于第一个示例被认为是有效的,您尝试将它直接存储到您的数据库中,而且您似乎正在使用整数或数字列。许多数据库,包括 MySQL 将尝试通过简单地删除第一个非数字字符之后的所有内容来将该值强制转换为整数。我总是建议使用 varchar
字段来存储电话号码,因为这些数字实际上没有数字意义(即您永远不会加/减)。
此外,仅仅依赖客户端验证也不是一个好主意。您总是希望在服务器端验证您的数据,因为欺骗客户端验证(无论是否恶意)是非常微不足道的。
关于JQuery Validator 插件电话验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13502191/