JQuery Validator插件电话验证

Ric*_*ard 5 html forms validation jquery jquery-validate

我遇到了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>
Run Code Online (Sandbox Code Playgroud)

对于电话号码列,数据库最终看起来像这样:
手机
有时它会正确插入完整的电话号码(红色划线),但有时它只会插入3位数字.我不知道为什么.这可能与Internet Explorer有关吗?有人遇到过这个问题吗?有谁知道为什么会这样?如果有人需要,这里是jquery验证代码的全部内容

Abd*_*aly 15

您正在使用phoneUS验证方法获取电话号码,该方法接受以下两个输入(示例):

  • 949-101-2020
  • 9491012020

由于第一个示例被认为是有效的,因此您尝试将其直接存储到数据库中,并且您似乎正在使用整数或数字列.许多数据库(包括MySQL)都会尝试通过简单地删除第一个非数字字符后的所有内容将该值强制转换为整数.我总是建议使用一个varchar字段来存储电话号码,因为这些数字实际上没有数字含义(即你永远不会加/减).

此外,仅依靠客户端验证是一个坏主意.您总是希望在服务器端验证您的数据,因为欺骗客户端验证(恶意或非恶意)非常简单.