欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js實(shí)現(xiàn)本地持久化存儲(chǔ)登錄注冊(cè)

 更新時(shí)間:2022年08月25日 10:46:02   作者:小滿blue  
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)本地持久化存儲(chǔ)登錄注冊(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了js實(shí)現(xiàn)本地持久化存儲(chǔ)登錄注冊(cè)的具體代碼,供大家參考,具體內(nèi)容如下

1.登錄html文件

<!DOCTYPE html>
<html lang="en">
<head>
? ? <meta charset="UTF-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <title>登錄界面</title>
? ? <style>
? ? ? ? .container {
? ? ? ? ? ? text-align: center;
? ? ? ? ? ? margin: 50px auto;
? ? ? ? ? ? width: 600px;
? ? ? ? ? ? height: 400px;
? ? ? ? ? ? background-color: rgb(201, 208, 247);
? ? ? ? ? ? box-sizing: border-box;
? ? ? ? ? ? padding-top: 20px;
? ? ? ? }
? ? ? ? .container input {
? ? ? ? ? ? width: 400px;
? ? ? ? ? ? height: 30px;
? ? ? ? ? ? border: none;
? ? ? ? ? ? list-style: none;
? ? ? ? }
? ? ? ? .container .btn {
? ? ? ? ? ? width: 404px;
? ? ? ? ? ? height: 35px;
? ? ? ? ? ? margin-top: 10px;
? ? ? ? ? ? border: none;
? ? ? ? ? ? background-color: deepskyblue;
? ? ? ? ? ? color: white;
? ? ? ? ? ? border-radius: 5px;
? ? ? ? ? ? cursor: pointer;
? ? ? ? }
? ? ? ? .container .text {
? ? ? ? ? ? margin-top: 10px;
? ? ? ? ? ? height: 20px;
? ? ? ? ? ? width: 400px;
? ? ? ? ? ? font-size: 12px;
? ? ? ? ? ? color: tomato;
? ? ? ? }
? ? </style>
</head>
<body>
? ? <div class="container">
? ? ? ? <h2>登錄界面</h2>
? ? ? ? <input type="text" name="loginId" placeholder="登錄賬號(hào)">
? ? ? ? <div class="text ?loginIdText"></div>
? ? ? ? <input type="password" name="loginPassword" placeholder="登錄密碼">
? ? ? ? <div class="text loginPasswordText"></div>
? ? ? ? <input class="btn loginBtn" type="submit" value="登錄">
? ? ? ? <input class="btn registerBtn" type="submit" value="注冊(cè)">
? ? </div>
? ? <script src="js/login.js"></script>
</body>
</html>

2.注冊(cè)html文件

<!DOCTYPE html>
<html lang="en">
<head>
? ? <meta charset="UTF-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <title>注冊(cè)界面</title>
? ? <style>
? ? ? ? .container{
? ? ? ? ? ? text-align: center;
? ? ? ? ? ? margin: 50px auto;
? ? ? ? ? ? width: 600px;
? ? ? ? ? ? height: 400px;
? ? ? ? ? ? background-color: rgb(201, 208, 247);
? ? ? ? ? ? box-sizing: border-box;
? ? ? ? ? ? padding-top: 20px;
? ? ? ? }
? ? ? ? .container input{
? ? ? ? ? ? width: 400px;
? ? ? ? ? ? height: 30px;
? ? ? ? ? ? border: none;
? ? ? ? ? ? list-style: none;
? ? ? ? }
? ? ? ? .container .btn{
? ? ? ? ? ? width: 404px;
? ? ? ? ? ? height: 35px;
? ? ? ? ? ? margin-top: 10px;
? ? ? ? ? ? border: none;
? ? ? ? ? ? background-color: deepskyblue;
? ? ? ? ? ? color: white;
? ? ? ? ? ? border-radius: 5px;
? ? ? ? ? ? cursor: pointer;
? ? ? ? }
? ? ? ? .container .text{
? ? ? ? ? ? margin-top: 10px;
? ? ? ? ? ? height: 20px;
? ? ? ? ? ? width: 400px;
? ? ? ? ? ? font-size: 12px;
? ? ? ? ? ? color: tomato;
? ? ? ? }
? ? </style>
</head>
<body>
? ? <div class="container">
? ? ? ? <h2>注冊(cè)界面</h2>
? ? ? ? <input type="text" name="registerId" placeholder="設(shè)置賬號(hào)">
? ? ? ? <div class="text registerIdText"></div>
? ? ? ? <input type="password" name="registerPassword" placeholder="設(shè)置密碼">
? ? ? ? <div class="text registerPasswordText" ></div>
? ? ? ? <input class="btn" type="submit" value="注冊(cè)">
? ? ? ? <input class="btn toLoginBtn" type="button" value="返回登錄">
? ? </div>
? ? <script src="js/register.js"></script>
</body>
</html>

3.登錄界面js文件

const isHaveId = () => {
? ? let loginId = loginIdEle.value
? ? //遍歷存儲(chǔ)的信息,如果有id相同的則返回true
? ? let idHave=message.some(item => loginId == item.id)
? ? //如果結(jié)果為true,顯示內(nèi)容為空,否則,顯示賬號(hào)不存在
? ? if (idHave==true) {
? ? ? ? loginIdText.innerHTML = ''
? ? ? ? return true
? ? } else {
? ? ? ? loginIdText.innerHTML = '賬號(hào)不存在!'
? ? ? ? return false
? ? }
}
//驗(yàn)證密碼
const isHavePassword = () => {
? ? let loginPassword = loginPasswordEle.value
? ? let passwordHave=message.some(item =>loginPassword == item.password )
? ? ? ? if (passwordHave==false) {
? ? ? ? ? ? loginPasswordText.innerHTML = '密碼錯(cuò)誤!'
? ? ? ? ? ? return false
? ? ? ? } else {
? ? ? ? ? ? loginPasswordText.innerHTML = ''
? ? ? ? ? ? return true
? ? ? ? }
}
//點(diǎn)擊事件
loginBtn.onclick = function () {
? ? let isEmptyChecjedId = emptyChecjedId()
? ? let isEmptyChecjedPassword = emptyChecjedPassword()
? ? if (!isEmptyChecjedId || !isEmptyChecjedPassword) {
? ? ? ? return
? ? }
? ? let idHave = isHaveId()
? ? let passwordHave = isHavePassword()
?
? ? if (!idHave ||!passwordHave ) {
? ? ? ? return
? ? }
? ? alert('登錄成功!')
? ? loginIdEle.value = ''
? ? loginPasswordEle.value = ''
}
?
//焦點(diǎn)事件
loginIdEle.addEventListener('blur', function () {
? ? let isEmptyChecjedId = emptyChecjedId()
? ? if (!isEmptyChecjedId) {
? ? ? ? return
? ? }
? ? isHaveId()
?
})
//密碼焦點(diǎn)事件
loginPasswordEle.addEventListener('blur', function () {
? ? let isEmptyChecjedPassword = emptyChecjedPassword()
? ? //如果為空,則不進(jìn)行強(qiáng)度驗(yàn)證,不為空時(shí),再進(jìn)行強(qiáng)度驗(yàn)證
? ? if (!isEmptyChecjedPassword) {
? ? ? ? return
? ? }
? ? isHavePassword()
})
//點(diǎn)擊注冊(cè)跳轉(zhuǎn)到注冊(cè)界面
function toRegister() {
? ? const toRegisterEle = document.querySelector('.registerBtn')
? ? toRegisterEle.onclick = function () {
? ? ? ? location.href = './register.html'
? ? }
}
toRegister()

4.注冊(cè)界面js文件

//獲取節(jié)點(diǎn)
const registerIdEle = document.querySelector('input[name="registerId"]')
const registerPasswordEle = document.querySelector('input[name="registerPassword"]')
const registerBtnEle = document.querySelector('.btn')
const registerIdText=document.querySelector('.registerIdText')
const registerPasswordText=document.querySelector('.registerPasswordText')
//賬號(hào)非空驗(yàn)證
const emptyChecjedId = () => {
? ? //獲取節(jié)點(diǎn)內(nèi)容
? ? let registerId = registerIdEle.value
? ? if (registerId == '') {
? ? ? ? registerIdText.innerHTML = '用戶名不能為空!'
? ? ? ? return false
? ? } else {
? ? ? ? registerIdText.innerHTML = ''
? ? ? ? return true
? ? }
}
//密碼非空驗(yàn)證
const emptyChecjedPassword=()=>{
? ? let registerPassword = registerPasswordEle.value
? ? if(registerPassword==''){
? ? ? ? registerPasswordText.innerHTML='密碼不能為空!'
? ? ? ? return false
? ? }else{
? ? ? ? registerPasswordText.innerHTML=''
? ? ? ? return true
? ? }
}
?
//密碼強(qiáng)度驗(yàn)證
const passwordDegree = () => {
? ? let password = registerPasswordEle.value
? ? let reg = /^[A-Z][0-9a-zA-Z]{7}/
? ? if (!reg.test(password)) {
? ? ? ? registerPasswordText.innerHTML = '密碼必須以大寫字母開頭,至少8位字母或數(shù)字!'
? ? ? ? return false
? ? } else {
? ? ? ? registerPasswordText.innerHTML = ''
? ? ? ? return true
? ? }
}
//點(diǎn)擊事件
registerBtnEle.onclick=function(){
? ? let isEmptyChecjedId=emptyChecjedId()
? ? let isEmptyChecjedPassword=emptyChecjedPassword()
? ? if(!isEmptyChecjedId||!isEmptyChecjedPassword){
? ? ? ? return
? ? }
? ? //密碼強(qiáng)度
? ? let isPasswordDegree=passwordDegree()
? ? if(!isPasswordDegree){
? ? ? ? return
? ? }
? ? alert('注冊(cè)成功!')
? ? //將數(shù)據(jù)持久化存儲(chǔ)
? ? let message={
? ? ? ? id:registerIdEle.value,
? ? ? ? password:registerPasswordEle.value
? ? }
? ? let messageStr=localStorage.getItem('userMessage')
? ? let messages=JSON.parse(messageStr) ||[]
? ? messages.push(message)
? ? localStorage.setItem('userMessage',JSON.stringify(messages))
? ? registerIdEle.value=''
? ? registerPasswordEle.value=''
}
//焦點(diǎn)事件
registerIdEle.addEventListener('blur', function () {
? ? emptyChecjedId()
})
//密碼焦點(diǎn)事件
registerPasswordEle.addEventListener('blur', function () {
? ? let isEmptyChecjedPassword=emptyChecjedPassword()
? ? //如果為空,則不進(jìn)行強(qiáng)度驗(yàn)證,不為空時(shí),再進(jìn)行強(qiáng)度驗(yàn)證
? ? if (!isEmptyChecjedPassword) {
? ? ? ? return
? ? }
? ? passwordDegree()
})
function toLogin(){
? ? const toLoginEle=document.querySelector('.toLoginBtn')
? ? toLoginEle.onclick=function(){
? ? ? ? location.href='./login.html'
? ? }
}
toLogin()

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 純JS 繪制數(shù)學(xué)函數(shù)

    純JS 繪制數(shù)學(xué)函數(shù)

    今天閑來無事用js寫了個(gè)數(shù)學(xué)繪圖包,還不算完整,不過總出現(xiàn)了雛形。
    2009-04-04
  • Bootstrap和Java分頁實(shí)例第二篇

    Bootstrap和Java分頁實(shí)例第二篇

    這篇文章主要為大家詳細(xì)介紹了Bootstrap和Java分頁實(shí)例第二篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 使用JavaScript解析URL的方法示例

    使用JavaScript解析URL的方法示例

    這篇文章主要給大家介紹了關(guān)于如何使用JavaScript解析URL的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Angular 頁面跳轉(zhuǎn)時(shí)傳參問題

    Angular 頁面跳轉(zhuǎn)時(shí)傳參問題

    這篇文章主要介紹了Angular 頁面跳轉(zhuǎn)時(shí)傳參問題的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • js中substring和substr的定義和用法

    js中substring和substr的定義和用法

    這篇文章主要介紹了js中substring和substr的定義和用法,需要的朋友可以參考下
    2014-05-05
  • JS匿名函數(shù)實(shí)例分析

    JS匿名函數(shù)實(shí)例分析

    這篇文章主要介紹了JS匿名函數(shù),結(jié)合實(shí)例形式分析了javascript匿名函數(shù)的定義、參數(shù)、返回值等相關(guān)使用方法,需要的朋友可以參考下
    2016-11-11
  • JS組件Bootstrap實(shí)現(xiàn)圖片輪播效果

    JS組件Bootstrap實(shí)現(xiàn)圖片輪播效果

    這篇文章主要為大家詳細(xì)介紹了JS組件Bootstrap實(shí)現(xiàn)圖片輪播效果的具體代碼,對(duì)圖片輪播效果感興趣的小伙伴們可以參考一下
    2016-05-05
  • js實(shí)現(xiàn)按鈕控制帶有停頓效果的圖片滾動(dòng)

    js實(shí)現(xiàn)按鈕控制帶有停頓效果的圖片滾動(dòng)

    這篇文章主要介紹了js實(shí)現(xiàn)按鈕控制帶有停頓效果的圖片滾動(dòng),,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • JavaScript性能優(yōu)化總結(jié)之加載與執(zhí)行

    JavaScript性能優(yōu)化總結(jié)之加載與執(zhí)行

    本文詳細(xì)介紹了如何正確的加載和執(zhí)行JavaScript代碼,從而提高其在瀏覽器中的性能。對(duì)JavaScript學(xué)習(xí)者很有幫助,有需要的可以參考學(xué)習(xí)。
    2016-08-08
  • js中斷 forEach 循環(huán)的方法匯總

    js中斷 forEach 循環(huán)的方法匯總

    這篇文章主要介紹了js中斷 forEach 循環(huán)的幾種方法,主要方法還是通過其它方式代替 forEach 循環(huán)的中斷,只有方法4 使用 try-catch 結(jié)構(gòu)是實(shí)際意義上中斷 forEach 循環(huán),需要的朋友可以參考下
    2023-10-10

最新評(píng)論