zoukankan      html  css  js  c++  java
  • python之路_头像预览、each循环及form组件校验验证码

    一、上传头像

    1、头像定位

      我们需要实现的效果是:当我们点击默认头像,用户可以进行选择要上传的头像文件,其原理就是头像的img标签与文件input(file类型)框重合或者关联,可以通过如下两种方式进行实现:

    (1)重合实现

      如下为二者标签:

    <div class="avatar_box">
           <img src="/static/img/default.png" alt="" id="avatar_img">
           <input type="file" class="form-control" id="avatar_file">
    </
    div>

      若使二者能够重合,且点击时是进行上传文件操作,要求input放在上面,而不能被看见,不能设置隐藏,就需要对其透明度进行设置,总体的css设置如下:

    (2)label关联

      将img标签放在label标签中,通过label标签for与input标签的id关联,并将input标签隐藏,便可以实现我们需要的功能,代码如下:

    <label for="avatar_file" class="col-sm-2 control-label col-sm-offset-2">
    <
    img src="/static/img/default.jpg" alt="" style=" 60px;height: 60px" id="avatar_img">
    </
    label> <input type="file" id="avatar_file" style="display: none">

    2、头像预览

      想实现头像的预览,其实就要默认头像的路径src换成最新上传头像的路径,通过如下两部事件实现,如下:

    $("#avatar_file").change(function () {                                     //input(file类型)标签选好上传文件后触发的事件
            var file=$(this)[0].files[0];                                      //获取上传的文件对象
            //读取文件url
            var reader=new FileReader();
            reader.readAsDataURL(file);                                       //获取上传文件的路径,但是直接返回结果
            //读完后,触发事件
            reader.onload=function () {
                $("#avatar_img").attr("src",this.result)                       //更换为新的图片路径,读取的url:this.result
    
            }
        });

    二、jquery中的each循环

      each循环主要有两种应用形式,一种是对查询到的标签对象循环,另一种就是对已知的序列数据进行循环,具体介绍实例如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="jquery-3.1.1.js"></script>
    </head>
    <body>
        <p>111</p>
        <p>222</p>
        <p>333</p>
        <script>
                 // each方式1:  循环标签
                  $("p").each(function () {
                      console.log($(this).html())
                  });
                 // each方式2:  序列数据
                 var arr=[111,222,333];
                 $.each(arr,function (i,j) {                                      //i是索引,j是值
                     console.log(i,j)
                 });
                 
                 $.each({"name":"alex","age":123},function (i,j) {               //i是key,j是value
                     console.log(i,j)
                 })
        </script>
    </body>
    </html>

      如下为ajax对form组件检验返回的errors信息进行循环处理的应用实例:

    三、form组件校验验证码

      在登录中我们讲过,系统生成的验证码为了能和用户输入的验证码进行校验,我们只能将系统生成的验证码设置成session进行保存,然后在需要的验证的视图函数中取出session值,并进行校验。

    #设置session
    request.session["valid_code_str"]=valid_code_str
    #获取session
    valid_code_str=request.session.get("valid_code_str")

      但是我们如果需要在form组件中进行验证码校验,我们该如何获取session呢?显然上述的方式中request参数在form组件中不存在,因此我们就需要把这个参数传给form组件中呢?如下介绍:

      因此form组件中的验证就可以使用request参数进行获取session值了,如下:

      注意,既然给Form类增加了request参数,我们在实例话的时候,一定要给这个参数,传的request也正是我们需要的那个参数,如下:

     
  • 相关阅读:
    jQuery之第4章 jQuery中的事件和动画
    jQuery之第3章 jQuery中的DOM操作
    jQuery之第2章 jQuery选择器
    输入一组学生的姓名和成绩,根据成绩降序排名。
    抽象类和接口
    pingpong线程输出问题
    sql优化
    [leedcode 242] Valid Anagram
    [leedcode 241] Different Ways to Add Parentheses
    [leedcode 240] Search a 2D Matrix II
  • 原文地址:https://www.cnblogs.com/seven-007/p/8067994.html
Copyright © 2011-2022 走看看