如何获取用户当前位置并生成国际拨号前缀+验证不同国家的手机号格式

文章目录

  • 前言
  • 一、引入并启用API
  • 二、js和html页面代码
    • 1.js代码
    • 2.html代码
  • 三、将原生js写在vue项目中


前言

该demo使用了HTML5的Geolocation API和Google Maps API来获取用户的位置信息,应用libphonenumber库将位置信息转换为国际拨号前缀并在页面默认展示,同时能够严格验证246个国家的手机号格式。如果感兴趣的话可以看下去~


一、引入并启用API

首先,需要在index.html中引入libphonenumber库和Google Maps API,代码如下;

<!-- 引入google map api --><script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCP1J2D4-toI4JzUtebVSK3_NAzsydF218"></script><!-- 引入Libphonenumber api --><script src="https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.9.21/libphonenumber-js.min.js"></script>

其中,YOUR_API_KEY应替换为我们自己的Google Maps API密钥。

获取方式为前往https://console.cloud.google.com/,新建项目-API和服务-凭据-创建凭据-API密钥。复制并进行替换。

替换后还需要在该页面搜索并启用以下两个API,否则会报错:

![在这里插入图片描述](https://img-blog.csdnimg.cn/619b1966ea214ce284c677e24a4b57af.png

二、js和html页面代码

1.js代码


// 获取用户的位置-检查是否支持Geolocation API
if (navigator.geolocation) {navigator.geolocation.getCurrentPosition(success, error);
} else {console.log("Geolocation is not supported by this browser.");
}// 处理成功获取位置的情况
function success(position) {// 获取用户的经纬度var lat = position.coords.latitude;var lng = position.coords.longitude;// 使用Google Maps API将经纬度转换为地址var geocoder = new google.maps.Geocoder();geocoder.geocode({ 'location': { lat: lat, lng: lng } }, function (results, status) {if (status === 'OK') {// 解析地址中的国家代码var countryCode = results[0].address_components.filter(c => c.types.includes('country'))[0].short_name;// 监听“验证”按钮的点击事件,验证手机号码var button = document.getElementById('validate-button');button.addEventListener('click', function () {var phoneNumber = libphonenumber.parse(document.getElementById('phone-number').value, countryCode);var isValidNumber = libphonenumber.isValidNumber(phoneNumber);var formattedNumber = libphonenumber.formatNumber(phoneNumber, 'E.164');// 将验证结果显示在页面上var result = "The phone number " + formattedNumber + " is " + (isValidNumber ? "valid" : "invalid") + ".";document.getElementById('phone-validation-result').innerHTML = result;});} else {console.log('Geocode was not successful for the following reason: ' + status);}});
}// 处理获取位置失败的情况
function error() {console.log("Unable to retrieve your location.");
}

2.html代码

<body><!-- 在页面中添加一个input输入框 --><input type="text" id="phone-number" placeholder="Enter a phone number"><!-- 在页面中添加一个“验证”按钮 --><button id="validate-button">Validate</button><!-- 在页面中添加一个元素,用于显示验证结果 --><p id="phone-validation-result"></p>
</body>

三、将原生js写在vue项目中

<template><div><!-- 使用v-model指令绑定手机号码 --><input type="text" v-model="phoneNumber" placeholder="Enter a phone number"><!-- 使用按钮来触发验证 --><button @click="validatePhoneNumber">Validate</button><!-- 在页面中添加一个元素,用于显示验证结果 --><p>{{ validationStatus }}</p></div>
</template><script>
import libphonenumber from 'libphonenumber-js';export default {data() {return {phoneNumber: '', // 用于绑定输入框的手机号码countryCode: '', // 用于存储用户所在国家的国家代码validationStatus: '', // 用于显示验证结果的字符串};},mounted() {// 获取用户所在的国家代码if (navigator.geolocation) {navigator.geolocation.getCurrentPosition(this.getCountryCode, this.handleGeolocationError);} else {console.log('Geolocation is not supported by this browser.');}},methods: {// 处理获取位置信息的情况getCountryCode(position) {// 获取用户的经纬度const lat = position.coords.latitude;const lng = position.coords.longitude;// 使用Google Maps API将经纬度转换为地址const geocoder = new window.google.maps.Geocoder();geocoder.geocode({ 'location': { lat: lat, lng: lng } }, (results, status) => {if (status === 'OK') {// 解析地址中的国家代码this.countryCode = results[0].address_components.filter(c => c.types.includes('country'))[0].short_name;} else {console.log('Geocode was not successful for the following reason: ' + status);}});},// 处理获取位置信息失败的情况handleGeolocationError() {console.log('Unable to retrieve your location.');},// 验证手机号码是否有效validatePhoneNumber() {const phoneNumber = libphonenumber.parse(this.phoneNumber, this.countryCode);const isValidNumber = libphonenumber.isValidNumber(phoneNumber);const formattedNumber = libphonenumber.formatNumber(phoneNumber, 'E.164');// 将验证结果显示在页面上this.validationStatus = `The phone number ${formattedNumber} is ${isValidNumber ? 'valid' : 'invalid'}.`;},},
};

p.s. 需要先在项目中安装libphonenumber库!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/30235.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国际手机号码检查纠正 API 接口

国际手机号码检查纠正 API 接口 有效性检查及智能纠正&#xff0c;遵循 E.164 标准&#xff0c;智能统一格式。 1. 产品功能 智能检测国际手机号码有效性&#xff1b;可根据提供的国家编码参数&#xff0c;判断提供的手机号码是否为该国家有效手机号码&#xff1b;智能纠正提…

国际电话区号--各国或地区电话国际区号对照表

具体参考&#xff1a;国际电话区号--各国或地区电话国际区号对照表

ChatGPT与人类大脑相比:揭示AI的优缺点

与人类大脑相比&#xff0c; ChatGPT这种AI机器人拥有一些优点和缺点&#xff0c;下面小编会简单说下 优点&#xff1a; 1. 学习和处理速度&#xff1a; ChatGPT能够快速处理和学习大量信息&#xff0c;比人类大脑更快。 2. 综合知识&#xff1a; ChatGPT可以整合大量来自各个…

ChatGPT 和 Elasticsearch:分面、过滤和更多上下文

作者&#xff1a;Luca Wintergerst 在最近的一篇博客文章中&#xff0c;我们讨论了 ChatGPT 和 Elasticsearch 如何协同工作以帮助更有效地管理专有数据。 通过利用 Elasticsearch 的搜索功能和 ChatGPT 的上下文理解&#xff0c;我们演示了如何改进结果。 在这篇文章中&#…

Elasticsearch:如何使用 Elasticsearch 以自然语言提示 ChatGPT

作者&#xff1a;Enrico Zimuel 这些天每个人都在谈论 ChatGPT。 这种大型语言模型 (LLM) 的一项很酷的功能是能够生成代码。 我们用它来生成 Elasticsearch DSL 查询。 目标是在 Elasticsearch 中搜索 “给我股票指数中 2017 年的前 10 个文档&#xff08;Give me the first 1…

Elasticsearch:在 Elastic 中访问机器学习模型

作者&#xff1a;Bernhard Suhm, Josh Devins Elastic 支持你需要的机器学习模型 Elastic 让你可以应用适合你的用例和 ML 专业水平的机器学习 (ML)。 你有多种选择&#xff1a; 利用内置的模型。 除了我们的可观察性和安全解决方案中针对特定安全威胁和系统问题类型的模型外…

谁是Al生成内容的作者?从法律视角的探讨

我们知道Al作品也可以具有独创性&#xff0c;并具备成为作品的条件。那么谁才是Al作品的作者呢&#xff1f;这次我们来一起分析下。 一、作者的定义 在版权法中&#xff0c;作者通常被定义为作品的创造者&#xff0c;是作品的原始所有者&#xff0c;并享有对作品的各种权利。通…

【电路原理学习笔记】第2章:电压、电流和电阻:本章习题

第2章&#xff1a;电压、电流和电阻 以后还是分开做&#xff0c;每一节习题都按节做&#xff0c;不集中在一起做了&#xff0c;太累了&#xff0c;而且要忙其他事&#xff0c;好不容易凑了几天时间做这个题 本章习题 同步练习 &#xff08;2-1&#xff09;3C电荷对应于多少…

深耕视听领域的匠人,如何看多媒体技术未来? | 专访上海交大宋利

引言 20 世纪 80 年代&#xff0c;当多媒体技术诞生&#xff0c;一个全新的多媒体应用时代大幕徐徐开启。四十年间&#xff0c;一代代技术人不断投身多媒体事业&#xff0c;这其中有许多深耕该领域的匠心人&#xff0c;埋首研究并持续创新&#xff0c;引领和推动多媒体技术不断…

怎么系统的阅读文献

文章目录 一、文献阅读1、综述类文献 review article2、研究类文章 research article3、方法学的文章第一部分 综述类文章的阅读第二部分 研究型文章的阅读a. 研究型论文结构b. 如何有选择阅读文献c. 如果整理笔记 Citation和Reference的区别 二、文献阅读工具1、Connected Pap…

微信登录——授权登录获取用户信息

引言 实现微信扫码登录关键之处就是获取到微信用户信息&#xff0c;那么这就涉及到了微信授权&#xff0c;通过微信授权我们可以获取到用户信息&#xff1b;微信官方文档写的还是比较详细的&#xff0c;但是没有代码演示&#xff0c;这里我就用代码演示一下如何实现微信授权登…

空指针的传说——从神秘出生到打败AI败类

大家好&#xff0c;我是数行天下&#xff0c;某C9双985硕士&#xff0c;交叉学科专业背景&#xff0c;具有多元化思维视角&#xff0c;拥有金融科技、互联网等多行业职业经历&#xff0c;现为某头部金融机构高级系统架构师。热爱思考&#xff0c;从过去到未来都有强烈的好奇心&…

LLM-2023:Auto-GPT

从本质上来看,Auto-GPT 是一种自动文本生成技术,它使用深度学习算法来生成类似人类的文本。它基于生成式预训练转换器 ( GPT ) 架构,是一种旨在生成自然语言文本的神经网络。 来源:https://github.com/Significant-Gravitas/Auto-GPT 据开发者介绍,Auto-GPT 是由 GPT-4 …

强烈推荐一个Python可视化模块,简单又好用!

超级无敌干货&#xff0c;第一时间送达&#xff01;&#xff01;&#xff01; 数据可视化动画还在用Excel做&#xff1f; 现在一个简单的Python包就能分分钟搞定&#xff01; 而且生成的动画也足够丝滑&#xff0c;效果是酱紫的&#xff1a; 这是一位专攻Python语言的程序员开发…

如何在家赚钱?宅在家里做点什么能挣钱

当今社会&#xff0c;由于各种原因&#xff0c;越来越多的人宅在家里&#xff0c;或者说下班之余宅家的空闲时间很多。这个时候呢&#xff0c;大家就会想利用空闲时间做点兼职副业来增收。 在这个信息爆炸的时代&#xff0c;互联网无疑是你实现在家赚钱的理想平台。宅在家里&am…

2023年,知识付费行业呈现哪些发展趋势?

艾媒咨询数据显示&#xff0c;2022年中国知识付费市场规模达1126.5亿元&#xff0c;较2015年增长约70倍&#xff0c;预计将在2025年超过2800亿元。随着疫情形势持续好转&#xff0c;知识付费的“居家红利”或将逐渐消退&#xff0c;但三年来用户的付费求知和在线学习习惯已经养…

一起推动更为广泛的创新发生!AIGC分布式创新联盟#工作小组介绍

AIGC 破圈前行 闯荡星际 分布式 无地域限制 跨领域整合 社区参与~ 游戏化积分激励 开放共享的创新生态 对于时代的声音&#xff0c;你会选择 一探究竟 加入我们 一波正经的自我介绍 AIGC分布式创新联盟由无界社区Mixlab、青年DAO、AIGC涌现小酒馆发起。联盟采取超级个体社群的共…

如何通过AI图片数字人引流变现,轻松日入1000+

AI图片数字人项目 项目分析 今天要跟大家分享关于AI图片数字人项目的玩法思路&#xff0c;最近有一个大佬通过玩AI图片数字人&#xff0c;在各大平台获得了惊人的涨粉效果&#xff0c;通过收徒变现和电商带货&#xff0c;轻松日收1000&#xff0c;我希望每一次的分享不仅仅是…

对不起,ChatGPT 不会干掉你,而是干掉整个行业

观点| Mr.K 主笔| Wendy.L 来源| 技术领导力(ID&#xff1a;jishulingdaoli) 近日&#xff0c;根据网站流量监测平台SimilarWeb的数据&#xff0c;自从OpenAI的对话人工智能工具ChatGPT推出以来&#xff0c;程序员们交流技术问题的问答网站平台Stack Overflow的流量骤降&…

借助ChatGPT,每天制作100条短视频

原文&#xff1a;‍‬‍‍⁡‬‌‬⁤‌⁡⁣‌⁡⁣⁤‬⁣‌‌&#xfeff;⁢⁡‌⁤‍⁢⁣‌‌⁣&#xfeff;‍⁤⁣⁤⁡⁢⁡⁣⁢https://wfscknagql.feishu.cn/docx/HZAPd1iIXoHo5mxcUBZcd3ILnsc 一直研究ChatGPT究竟能做什么&#xff0c;网上有太多的文章&#xff0c;不管别人…