美文网首页ios菜鸟收集区首页投稿(暂停使用,暂停投稿)iOS Developer
iOS-04-iOS调用js实现校验身份证、港澳通行证、护照、军

iOS-04-iOS调用js实现校验身份证、港澳通行证、护照、军

作者: 小东门儿 | 来源:发表于2016-07-22 11:03 被阅读864次

    前提

    我们在平常注册的时候都会校验省份证,但是很少会遇到校验其他证件类型的,今天正好结合ios调用js方法实现这一操作

    实现方法

    创建html文件

    <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> </head> <body> <input type="button" value="btn" id="btn" onclick="isjunguanzheng()" /> <input type="button" value="btn" id="btn" onclick="isHkongMacao()" /> <input type="button" value="btn" id="btn" onclick="isTaiw()" /> <input type="button" value="btn" id="btn" onclick="issfz()" /> <input type="button" value="btn" id="btn" onclick="isPassport()" /> <script> // 验证身份证号码有效性的方法 function issfz(value) { card_number = value.toLowerCase(); var aCity = {11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外"}; if (!/^\d{17}(\d|x)$/i.test(card_number)) { //身份证不能为空 return false; } else { card_number = card_number.replace(/x$/i, "a"); if (aCity[parseInt(card_number.substr(0, 2))] == null) { //你的身份证地区非法 return false; } else { var sBirthday = card_number.substr(6, 4) + "-" + Number(card_number.substr(10, 2)) + "-" + Number(card_number.substr(12, 2)); var d = new Date(sBirthday.replace(/-/g, "/")); if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())) { //身份证上的出生日期非法 return false; } else { var iSum = 0; for (var i = 17; i >= 0; i--) { iSum += (Math.pow(2, i) % 11) * parseInt(card_number.charAt(17 - i), 11); } if (iSum % 11 != 1) { //你输入的身份证号非法 return false; } return true; //aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女") } } } } //护照验证 function isPassport(value) { var c = /\S{8,14}/; return c.test(value); } //军官证验证 function isjunguanzheng(value) { var reg = /\S{8,10}/; value = value.replace(/(^\s*)|(\s*$)/g, ""); if (reg.test(value) === false) { return false; } else { return true; } } //验证港澳通行证 function isHkongMacao(value) { var a = /\S{9,12}/; return a.test(value); } //验证台胞证 function isTaiw(value, element) { var d = /\d{8,11}/; return d.test(value); } </script> </body> </html>
    这里我们不需要了解太多 只需要知道 我们通过调用isjunguanzheng()isHkongMacao()isTaiw()issfz()isPassport()实现功能。

    在原生ios项目中调用html文件中的js方法

    将创建的html文件导入到我们的工程中,在我们需要使用js功能的地方创建webView并调用
    #import "ViewController.h" @interface ViewController () <UIWebViewDelegate> @property (nonatomic, strong) UIWebView* webview; @end @implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; self.webview = [[UIWebView alloc] init]; self.webview.backgroundColor = [UIColor clearColor]; self.webview.delegate = self; NSString* basePath = [[NSBundle mainBundle] bundlePath]; NSString* helpHtmlPath = [basePath stringByAppendingPathComponent:@"ver.html"]; NSURL* url = [NSURL fileURLWithPath:helpHtmlPath]; //加载本地html文件 [self.webview loadRequest:[NSURLRequest requestWithURL:url]]; [self.view addSubview:self.webview]; }- (void)touchesBegan:(NSSet<UITouch*>*)touches withEvent:(UIEvent*)event { NSString* str = [self.webview stringByEvaluatingJavaScriptFromString:@"issfz('130621199208225275');"]; NSLog(@"JS返回值:%@", str); } @end

    通过该方式并能实现我们想要的功能!

    相关文章

      网友评论

        本文标题:iOS-04-iOS调用js实现校验身份证、港澳通行证、护照、军

        本文链接:https://www.haomeiwen.com/subject/phwbjttx.html