Rumah hujung hadapan web tutorial js 详解用jQuery+Angular实现登录界面验证码的功能

详解用jQuery+Angular实现登录界面验证码的功能

Apr 28, 2017 am 09:44 AM

这篇文章主要介绍了使用jQuery,Angular实现登录界面验证码详解,需要的朋友可以参考下

写在前面:

前段事件,做了一个用ajax后台异步交互的登录功能,自己在上面加了一个验证码的功能,这个功能背后的原理挺好理解的,实现起来也十分简单,特此写波分享,,自己写的过程中踩了不少坑,这里还是照例写的详细点,大家可以做个参考,喜欢的朋友可以点个赞,或者关注一波。

最终实现的效果:

 

当点击登录之前,会先判断验证码是否正确(验证码可以不区分大小写,也可以区分大小写),验证码错误会刷新验证码,验证码验证之前,不会进行跨域登录操作。

整体思路。

1.取四位随机数

2.赋值到验证码的input框里。

3.在点击登录之前先用if判断验证码input框的值和输入框的值是否相等,相等时进入下一步操作,不相等直接返回错误

4.里面ajax的部分可以直接套进去。

细节:

1.这里的验证码框的背景图片是网上自己找的,显得验证码比较正式,不然显得有点low。

2.不区分大小写实际上就是利用js的toUpperCase()方法是把小写转换成大写,因为是原生js所以在angular中也可以使用!

3.将验证码封装成一个函数,然后在点击登录时在最后调用这个函数,可以每次都刷新函数。

4.避免验证码被复制,在html里面使用:disabled="disabled"——禁止验证码框文字被选中。

下面是代码部分实现过程详解(注释写的比较详细):

html代码应该不会解释了,有不懂的,可以在评论区问我。下面有部分关于angular的内容,暂时还没学到这里可以跳过去,没有影响到实现效果的。(可以把代码复制过去,然后在自己本地试试。)

先放用jq实现的过程,然后放angular实现的过程,看过我几篇文章的都知道,我尽量会把所有代码,每一步都注释的清清楚楚,希望可以帮助到大家。

这里是html的内容:


<p class="js5-form" id="js5-form" ng-controller="enterCtrl">
    <p id="enter-all" >
      <h3>jnshu后台登录</h3>
      <form action="" name="myForm">
        <p class="js5-input-p">
          <p class="js5-input-img1"></p>
          <input id="js5-userNum" type="text" name="userName" placeholder="用户名" maxlength="12" ng-model="userName" ng-keyup="mykey($event)" required/>
        </p>
      </form>
      <form action="" name="registerForm">
        <p class="js5-input-p">
          <p class="js5-input-img2"></p>
          <input id="js5-password" type="password" name="userPsd" placeholder="密码" maxlength="20" ng-model="userPsd" ng-keyup="mykey($event)" ng-minlength="5" ng-maxlength="16" required/>
        </p>
      </form>
      <!--账号和密码的登录框-->
      <form action="" >
        <p class="js5-input-p">
          <span class="js5-input-pSpan">验证码:</span>
          <input type="text" placeholder="不区分大小写" class="js5-form3-input" id="js5-form3-input" ng-model="writeCode" maxlength="6" ng-keyup="mykey($event)">
          <input type="text" class="js5-authCode" value="" id="js5-authCode" ng-model="showAuthCode" disabled="disabled">
           <!--disabled="disabled"禁止验证码框文字被选中-->
          <span class="spanShift" ng-click="changeVerify()">获取</span>
        </p>
      </form>
Salin selepas log masuk

这里是jq代码实现部分:


var authCode;
  randomCode=$("#js5-authCode").eq(0);//获取验证码出现的方框dom
console.log(randomCode);
function createCode() {
  authCode="";//设置这个为空变量,然后往里面添加随机数
  var authCodeLength=4;//随机数的长度
  randomArray=[0,1,2,3,4,5,6,7,8,9,&#39;A&#39;,&#39;B&#39;,&#39;C&#39;,&#39;D&#39;,&#39;E&#39;,&#39;F&#39;,&#39;G&#39;,&#39;H&#39;,&#39;I&#39;,&#39;J&#39;,&#39;K&#39;,&#39;L&#39;,&#39;M&#39;,&#39;N&#39;,&#39;O&#39;,&#39;P&#39;,&#39;Q&#39;,&#39;R&#39;, &#39;S&#39;,&#39;T&#39;,&#39;U&#39;,&#39;V&#39;,&#39;W&#39;,&#39;X&#39;,&#39;Y&#39;,&#39;Z&#39;];
  //创建一个数组,随机数从里面选择四位数或者更多
  for(var i=0;i<authCodeLength;i++){
    var index=Math.floor(Math.random()*36);//随机取一位数
    authCode +=randomArray[index];//取四位数,并+相连
  }
  console.log(authCode);//取到四位随机数之后,跳出循环
  randomCode.val(authCode);//将四位随机数赋值给验证码出现的方框
  console.log(randomCode.val());
}
//以上是封装的获取验证码的函数
$(function () {//当文档加载结束后,运行这个函数
  createCode();//一开始先运行一遍取随机数的函数
  $("#js5-btn").click(function () {//这里是一个点击事件
    console.log(window.randomCode);
    //这里写了一个必报,window.randomCode是在文档里面找到这个dom,否则上文的四个随机数传不到这里来
    var randomCode=window.randomCode.val();
    console.log(randomCode);
    var authInput=$("#js5-form3-input").val().toUpperCase(),
      user=$("#js5-userNum").val(),
      psd=$(&#39;#js5-password&#39;).val();
    //上面三个是分别获取验证码输入框的值,账号的值,密码的值。
    //验证码输入框这里,最后toUpperCase()方法是把小写转换成大写
    console.log(authInput);
    console.log(randomCode);
    console.log(user,psd);
    if (randomCode===authInput) {
    //验证验证码,在验证码输入框与验证码的值不相等之前,是不会进入下面登录的步骤的,验证码是第一步关卡
      var firstAjax = new XMLHttpRequest();
      //创建ajax对象,这里是ajax跨域的部分
      firstAjax.open("POST", "这里是你url跨域的地址", true);
      //连接服务器,跨域。
      firstAjax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      //setRequestHeader() 方法指定了一个 HTTP 请求的头部,它应该包含在通过后续 send() 调用而发布的请求中。
      //可以理解为,这是http的请求头,固定格式,位置必须要在open之后,send之前。
      firstAjax.send("name=" + user + "&pwd=" + psd);
      //在使用POST方式时参数代表着向服务器发送的数据,前面两个是账号框和密码框
      firstAjax.onreadystatechange = function () {//当参数被传入服务器的时候,引用监听事件。
        if (firstAjax.readyState == 4) {//readyState四种状态,当执行四步完成之后
          if (firstAjax.status == 200) {//返回的是200,代表成功,404未找到。
            var returnValue = JSON.parse(firstAjax.responseText);//取回由服务器返回的数据
            console.log(returnValue);
            if (returnValue.code == 0) {//这里是后端定义的,当code==0的时候,代表登录正确。
              window.location.href = "https://www.baidu.com/index.php?tn=98012088_3_dg&ch=1";
              //后端返回的数据验证成功就跳转链接。
            }
            else {
              $("#js5Message").text(returnValue.message);//当code不等于0时,返回出错信息
            }
          } else {
            alert("出错咯,咯咯咯");//返回的不是200的时候,出错。
          }
        }
      };
      createCode();//点击登录按钮,验证之后会刷新验证码
    }
    else {
      $("#js5Message").text("验证码错误,请重新输入");
      createCode();//验证码错误,刷新验证码。
    }
  })
});
Salin selepas log masuk

这是是angular代码实现部分:

jq部分写的详细一点,这里也挺详细的,如果不懂的话,可以回头看看jq部分,原理都是一样的,复制到本地自己多试试。

var enter=angular.module("myApp");
enter.controller(&#39;enterCtrl&#39;,[&#39;$scope&#39;,&#39;$http&#39;,&#39;$state&#39;,function ($scope,$http,$state) {
  $scope.changeVerify=function () {//定义了一个点击事件,获取验证码
    var authCode="";
    var authCodeLength=4;//取几个随机数字
    var randomArray=[0,1,2,3,4,5,6,7,8,9,&#39;A&#39;,&#39;B&#39;,&#39;C&#39;,&#39;D&#39;,&#39;E&#39;,&#39;F&#39;,&#39;G&#39;,&#39;H&#39;,&#39;I&#39;,&#39;J&#39;,&#39;K&#39;,&#39;L&#39;,&#39;M&#39;,&#39;N&#39;,&#39;O&#39;,&#39;P&#39;,&#39;Q&#39;,&#39;R&#39;, &#39;S&#39;,&#39;T&#39;,&#39;U&#39;,&#39;V&#39;,&#39;W&#39;,&#39;X&#39;,&#39;Y&#39;,&#39;Z&#39;];
    for(var i=0;i<authCodeLength;i++){
      var index=Math.floor(Math.random()*36);//随机取一位数
      authCode +=randomArray[index];//取四位数,并+相连
    }
    $scope.showAuthCode=authCode;//赋值
    console.log($scope.showAuthCode);
  };
  //上面是封装的获取验证码的函数,会在下面进行调用
 (function () {
    $scope.changeVerify();//调用点击事件。
    $scope.enter=function (userName,userPsd) {
      //点击登录按钮事件,将双向绑定的账号密码当做参数传入函数
      if ($scope.writeCode.toUpperCase() ==$scope.showAuthCode){//toUpperCase()将小写转化为大写
        //双向绑定验证码输入框,可以直接使用,这里是验证验证码
        $http({
          method:"POST",
          url:"你的跨域地址",//$http的固定格式
          params:{
            "name":userName,
            "pwd":userPsd
            //双向绑定的参数传到下个页面
          }
        }).then(function (res) {
          //获取服务器返回的参数
          console.log(res);
          if (res.data.code!==0){
            //参数不为0的时候,弹出提示
            alert(res.data.message);
          }else {
            //参数为0的时候,跳转页面
            $state.go("home.studentList");
          }
        })
      }else {
        alert("验证码输入错误咯,咯咯咯");
        $scope.changeVerify();//验证后,刷新验证码
      }
    }
  }());
Salin selepas log masuk

后话

断断续续写了两天,现在写的没有之前那么快了。。差不多就以上这些内容,有问题可在评论区留言。有不足欢迎指导,拍砖。

Atas ialah kandungan terperinci 详解用jQuery+Angular实现登录界面验证码的功能. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah yang perlu saya lakukan jika Google Chrome tidak memaparkan imej kod pengesahan Chrome tidak memaparkan kod pengesahan? Apakah yang perlu saya lakukan jika Google Chrome tidak memaparkan imej kod pengesahan Chrome tidak memaparkan kod pengesahan? Mar 13, 2024 pm 08:55 PM

Apakah yang perlu saya lakukan jika Google Chrome tidak memaparkan imej kod pengesahan? Kadangkala anda memerlukan kod pengesahan untuk log masuk ke halaman web menggunakan Google Chrome. Sesetengah pengguna mendapati bahawa Google Chrome tidak dapat memaparkan kandungan imej dengan betul apabila menggunakan kod pengesahan imej. Apa yang patut dibuat? Editor di bawah akan memperkenalkan cara menangani kod pengesahan Google Chrome yang tidak dipaparkan. Saya harap ia akan membantu semua orang! Pengenalan kaedah: 1. Masukkan perisian, klik butang "Lagi" di penjuru kanan sebelah atas, dan pilih "Tetapan" dalam senarai pilihan di bawah untuk masuk. 2. Selepas memasuki antara muka baharu, klik pilihan "Tetapan Privasi dan Keselamatan" di sebelah kiri. 3. Kemudian klik "Tetapan Laman Web" di sebelah kanan

Bagaimana untuk memasang Angular pada Ubuntu 24.04 Bagaimana untuk memasang Angular pada Ubuntu 24.04 Mar 23, 2024 pm 12:20 PM

Angular.js ialah platform JavaScript yang boleh diakses secara bebas untuk mencipta aplikasi dinamik. Ia membolehkan anda menyatakan pelbagai aspek aplikasi anda dengan cepat dan jelas dengan memanjangkan sintaks HTML sebagai bahasa templat. Angular.js menyediakan pelbagai alatan untuk membantu anda menulis, mengemas kini dan menguji kod anda. Selain itu, ia menyediakan banyak ciri seperti penghalaan dan pengurusan borang. Panduan ini akan membincangkan cara memasang Angular pada Ubuntu24. Mula-mula, anda perlu memasang Node.js. Node.js ialah persekitaran berjalan JavaScript berdasarkan enjin ChromeV8 yang membolehkan anda menjalankan kod JavaScript pada bahagian pelayan. Untuk berada di Ub

Artikel yang meneroka pemaparan sisi pelayan (SSR) dalam Angular Artikel yang meneroka pemaparan sisi pelayan (SSR) dalam Angular Dec 27, 2022 pm 07:24 PM

Adakah anda tahu Angular Universal? Ia boleh membantu tapak web menyediakan sokongan SEO yang lebih baik!

Cara menggunakan PHP dan Angular untuk pembangunan bahagian hadapan Cara menggunakan PHP dan Angular untuk pembangunan bahagian hadapan May 11, 2023 pm 04:04 PM

Dengan perkembangan pesat Internet, teknologi pembangunan bahagian hadapan juga sentiasa bertambah baik dan berulang. PHP dan Angular ialah dua teknologi yang digunakan secara meluas dalam pembangunan bahagian hadapan. PHP ialah bahasa skrip sebelah pelayan yang boleh mengendalikan tugas seperti memproses borang, menjana halaman dinamik dan mengurus kebenaran akses. Angular ialah rangka kerja JavaScript yang boleh digunakan untuk membangunkan aplikasi satu halaman dan membina aplikasi web berkomponen. Artikel ini akan memperkenalkan cara menggunakan PHP dan Angular untuk pembangunan bahagian hadapan, dan cara menggabungkannya

Bolehkah nombor maya menerima kod pengesahan? Bolehkah nombor maya menerima kod pengesahan? Jan 02, 2024 am 10:22 AM

Nombor maya boleh menerima kod pengesahan Selagi nombor telefon bimbit yang diisi semasa pendaftaran mematuhi peraturan dan nombor telefon bimbit boleh disambungkan seperti biasa, anda boleh menerima kod pengesahan SMS. Walau bagaimanapun, anda perlu berhati-hati apabila menggunakan nombor telefon mudah alih maya Sesetengah tapak web tidak menyokong pendaftaran nombor telefon mudah alih maya, jadi anda perlu memilih pembekal perkhidmatan nombor telefon mudah alih maya biasa.

Mengapa saya tidak boleh menerima kod pengesahan pada telefon saya? Mengapa saya tidak boleh menerima kod pengesahan pada telefon saya? Aug 17, 2023 pm 02:49 PM

Kegagalan menerima kod pengesahan pada telefon mudah alih anda disebabkan oleh masalah rangkaian, masalah tetapan telefon mudah alih, masalah operator telefon mudah alih dan masalah tetapan peribadi. Pengenalan terperinci: 1. Masalah rangkaian Persekitaran rangkaian di mana telefon bimbit berada tidak stabil atau isyarat lemah, yang mungkin menyebabkan kod pengesahan tidak dapat dihantar tepat pada masanya atau fungsi suara telefon mudah alih dimatikan secara tidak sengaja, atau Nombor penghantaran kod pengesahan ditambah ke senarai hitam, menyebabkan kod pengesahan tidak diterima seperti biasa 3. Isu operator telefon mudah alih, operator telefon mudah alih mungkin mengalami kerosakan atau penyelenggaraan, mengakibatkan kod pengesahan tidak dihantar tepat pada masanya, dsb.

Kes pemprosesan imej PHP: Bagaimana untuk melaksanakan fungsi kod pengesahan imej Kes pemprosesan imej PHP: Bagaimana untuk melaksanakan fungsi kod pengesahan imej Aug 17, 2023 pm 12:09 PM

Kes pemprosesan imej PHP: Bagaimana untuk melaksanakan fungsi kod pengesahan imej Dengan perkembangan pesat Internet, kod pengesahan telah menjadi salah satu cara penting untuk melindungi keselamatan laman web. Kod pengesahan ialah kaedah pengesahan yang menggunakan teknologi pengecaman imej untuk menentukan sama ada pengguna adalah pengguna sebenar. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi kod pengesahan imej, dan disertakan dengan contoh kod. Pengenalan Kod pengesahan ialah gambar yang mengandungi aksara rawak Pengguna perlu memasukkan aksara dalam gambar untuk lulus pengesahan. Proses utama melaksanakan kod pengesahan termasuk menjana aksara rawak dan melukis aksara ke dalam gambar.

Panduan Pembangunan PHP: Melaksanakan Log Masuk Kod Pengesahan Panduan Pembangunan PHP: Melaksanakan Log Masuk Kod Pengesahan Jul 01, 2023 am 09:27 AM

Dengan perkembangan Internet dan populariti telefon pintar, fungsi log masuk kod pengesahan diterima pakai oleh semakin banyak laman web dan aplikasi. Log masuk kod pengesahan ialah kaedah log masuk yang mengesahkan identiti pengguna dengan memasukkan kod pengesahan yang betul untuk meningkatkan keselamatan dan mencegah serangan berniat jahat. Dalam pembangunan PHP, melaksanakan fungsi log masuk kod pengesahan mudah tidak rumit dan boleh diselesaikan melalui langkah-langkah berikut. Buat jadual pangkalan data Pertama, kita perlu mencipta jadual dalam pangkalan data untuk menyimpan maklumat kod pengesahan. Struktur jadual boleh mengandungi medan berikut: id: auto-incrementing primary key phone

See all articles