bootstrapvalidator里面验证ID的坑

bootstrapvalidator(以下简称BV)是一个前端表单验证框架,之前项目用到了,我这篇文章所想记录的是我在用BV的时候踩到的一个小坑。
有一个需求是:验证身份证号码是否合法(暂不需要和DB里的身份证做对比,只验证格式)
我想这么简单的需求应该很好实现吧!
于是乎我就写成了这样:
html如下:

<div class="form-group">
        <input id="id-card-input" type="text" placeholder="请输入身份证号码" name="idCard" class="form-control" maxlength="18"
               required>
      </div>

js如下:

idCard: {
        message: '身份证输入错误,请重新输入',
        validators: {
          notEmpty: {
            message: '此项必填哦'
          },
          id: {
            country:'CN',
            message: '身份证输入错误,请重新输入',
          }
        }
      }

然后去测试,咦~~为啥报错了?我一共测试了5个人的身份证号码,失败了4个。也就是说只验证到一个人的身份证是合法的。所以这样的写法不可取。


我自己的身份证.png

百度了一下,已经有人说了,这个框架没有办法正确验证中国人的ID card.
于是我又想到用正则来验证,不用他提供的id验证的方法。
js如下

 regexp: {
            regexp:'/(^\d{15}$)|(^\d{17}([0-9]|X)$)/',
            message: '身份证输入错误,请重新输入'
          }

然后还是报错,啥都不能验证了。这是为啥?难道是我写错了吗?换了几个写法也不对,不晓得。我正准备换一个写法,单独写一个function来处理这里的时候,我想了想,不应该啊!为何这么简单的一个需求BV实现不了呢?
于是乎我又试了一下h5的写法,把正则表达式写在h5里面。

<div class="form-group">
        <input id="id-card-input" type="text" placeholder="请输入身份证号码" name="idCard" class="form-control" maxlength="18"
               pattern="(^\d{15}$)|(^\d{17}([0-9]|X)$)" required>
      </div>

and then,test says successful!
可以正确验证身份证号码。
目的达到了。但是为何写在js里不行,html里面就可以的原因,我还是不晓得。
如果有看官明了的话,求指教。
(以上纯粹个人浅显踩坑经验,希望对你有用。如果有需要校正的地方,欢迎大方提出。☺)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,124评论 25 708
  • 前些日子从@张鑫旭微博处得一份推荐(Front-end-tutorial),号称最全的资源教程-前端涉及的所有知识...
    谷子多阅读 4,267评论 0 44
  • 也许现在的拖延症是最烦人的毛病了。 比如说好的减肥,一拖再拖。比如工作一拖再拖,到了deadline才会动起来,最...
    宝娴阅读 383评论 0 1
  • 潜伏了一星期,找到了一份数据处理的工作。上午面试结束,下午就去了上班的地方开始接触工作。 再去面试之...
    潮汐有信阅读 262评论 0 0
  • 大家好 我是小白 一个喜欢猫咪,爱摄影的程序员 这是我在回家的路上遇到的蔷薇花,当时觉得很美,就用相机留下了这个美...
    瀚宇泽霖阅读 222评论 2 2