• 5.1 《锋利的jQuery》jQuery对表单的操作


    1. 获取焦点和失去焦点改变样式
    2. 改变文本框/滚动条高度
    3. 复选框应用
    4. 下拉框应用
    5. 表单验证

    tip1

    注意使用<label>的for标签,对应input的id。(for 属性规定 label 与哪个表单元素绑定。)

    tip2:

    注意:jquery从1.6版本开始,哪些属性应该用attr()访问,哪些应该用prop()访问。

    第一个原则:只添加属性名称该属性就会生效应该使用prop();

    第二个原则:只存在true/false的属性应该使用prop();

    按照官方说明,如果是设置disabled和checked这些属性,应使用prop()方法,而不是attr()方法。

    1、获取焦点和失去焦点改变样式

    input:focus,textarea:focus{
                border: 1px solid #ff3300;
                background-color: #fcc;
            }
            /*IE6并不支持除超链接元素之外的:hover伪类选择符。*/

    so,

    $(":input").focus(function(){
                $(this).addClass("focus");
            }).blur(function(){
                $(this).removeClass("focus");
            });
    //        :input表示选择表单中的input,select,textarea,button元素,input仅仅选择input元素。

     2、改变文本框/滚动条高度

            var $comment=$("#commnet");
            $(".bigger").click(function(){
                if($comment.is(":animated")){
    //                if($comment.height()<500){
    //                    $comment.animate({height:"+=50"},400);
    //                }  //高度变大
                    $comment.animate({scrollTop:"-=50"},400); //向上滚动
                }
            });
            $(".smaller").click(function(){
                if($comment.is(":animated")){
    //                if($comment.height()>50){
    //                    $comment.animate({height:"-=50"},400);
    //                }   //高度变小
                    $comment.animate({scrollTop:"+=50"},400); //向下滚动
                }
            })

     3、复选框应用

        <form action="#" method="post" id="regForm">
            你爱好的运动是?
            <input type="checkbox" id="CheckAll">全选/全不选
            <br/>
            <input type="checkbox" name="items" value="足球"> 足球
            <input type="checkbox" name="items" value="篮球"> 篮球
            <input type="checkbox" name="items" value="羽毛球"> 羽毛球
            <input type="checkbox" name="items" value="乒乓球"> 乒乓球<br/>
            <input type="button" id="CheckRev" value="反选">
            <input type="button" id="send" value="提交">
        </form>
        $(function () {
    //        全选/全不选
            $("#CheckAll").click(function () {
                $("[name=items]:checkbox").prop("checked", this.checked);
            });
    //        反选
            $("#CheckRev").click(function () {
                $("[name=items]:checkbox").each(function () {
                    this.checked = !this.checked;
                })
            });
    //        提交
            $("#send").click(function () {
                var str = "你选择中的是:";
                $("[name=items]:checkbox:checked").each(function () {
                    str += $(this).val() + "/";
                })
                alert(str);
            })
    //        跟全选联动
            $("[name=items]:checkbox,#CheckRev").click(function(){  //#CheckRev添加了反选的联动
                var flag=true;
                $("[name=items]:checkbox").each(function(){
                    if(!this.checked){
                        flag=false;
                    }
                });
                $("#CheckAll").prop("checked",flag);
            })
        });

    4、下拉框应用

    <div class="fz">
        <div class="content l">
            <select multiple id="select1" style=" 100px; height: 160px;">
                <option value="1">选项1</option>
                <option value="2">选项2</option>
                <option value="3">选项3</option>
                <option value="4">选项4</option>
                <option value="5">选项5</option>
                <option value="6">选项6</option>
                <option value="7">选项7</option>
                <option value="8">选项8</option>
            </select>
            <div>
                <span id="add">选中添加到右边&gt;&gt;</span><br/>
                <span id="add_all">全部添加到右边&gt;&gt;</span>
            </div>
        </div>
        <div class="content l">
            <select multiple id="select2" style=" 100px; height: 160px;"></select>
            <div>
                <span id="remove">&lt;&lt;选中删除到左边</span><br/>
                <span id="remove_all">&lt;&lt;全部删除到左边</span>
            </div>
        </div>
    </div>
        $(function () {
    //        选中添加到右边
            $("#add").click(function(){
                var $option=$("#select1 option:selected");
    //            var $remove=$option.remove();
    //            $remove.appendTo("#select2");
    //            删除和追加可以用appendTo()方法直接完成
                $option.appendTo("#select2");
            });
    //        全部添加到右边
            $("#add_all").click(function(){
                var $option=$("#select1 option");
                $option.appendTo("#select2");
            });
    //        双击添加到右边
            $("#select1").dblclick(function(){
                var $option=$("option:selected",this);
                $option.appendTo("#select2");
            })
        });

    5、表单验证:

     <form method="post" action="">
            <div class="int">
                <label for="username">用户名:</label>
                <input type="text" id="username" class="required">
            </div>
            <div class="int">
                <label for="email">邮箱:</label>
                <input type="text" id="email" class="required">
            </div>
            <div class="int">
                <label for="personinfo">个人资料:</label>
                <input type="text" id="personinfo">
            </div>
            <div class="sub">
                <input type="submit" value="提交" id="send"> <input type="reset" id="res">
            </div>
        </form>
        $(function () {
            $("form :input.required").each(function(){
                var $required=$("<strong class='red'>*</strong>");
                $(this).parent().append($required);
            });
            $("form :input").blur(function(){
                $parent=$(this).parent();
                $parent.find(".formtips").remove();
    //            验证用户名
                if($(this).is("#username")){
                    if(this.value==""||this.value.length<6){
                        var errorMsg="请输入至少6位数的用户名";
                        $parent.append("<span class='formtips onError'>"+errorMsg+"</span>");
                    }else{
                        var okMsg="输入正确";
                        $parent.append("<span class='formtips onSuccess'>"+okMsg+"</span>");
                    }
                }
    //            验证邮箱
                if($(this).is("#email")){
                    if(this.value==""||this.value!=""&&!/.+@.+.[a-zA-Z]{2,4}$/.test(this.value)){
                        var errorMsg="请输入正确的email";
                        $parent.append("<span class='formtips onError'>"+errorMsg+"</span>");
                    }else{
                        var okMsg="输入正确";
                        $parent.append("<span class='formtips onSuccess'>"+okMsg+"</span>");
                    }
                }
            }).keyup(function(){                //新增,keyup()用户每次松开按键的时候触发
                $(this).triggerHandler("blur");  //trigger()不仅会触发为元素绑定的blur事件,也会触发浏览器默认的blur事件,
                // 即不能将光标定位到文本框上。而triggerHander("blur")只会触发为元素绑定的blur,而不触发浏览器默认的blur事件
            }).focus(function(){               //新增,focus()元素得到焦点的时候触发
                $(this).triggerHandler("blur");
            });
    //        表单提交
            $("#send").click(function(){
                $("form .required:input").trigger("blur");
                var numError=$("form .onError").length;
                if(numError){
                    return false;
                }else{
                    alert("注册成功!");
                }
            })
        });
  • 相关阅读:
    ajax提交Form
    MySQL新建用户,授权,删除用户,修改密码总结
    php 数组操作类(整合 给意见)
    PHP基于数组的分页函数(核心函数array_slice())
    php生成table表格
    百度地图定位
    python-redis-订阅和发布
    宿主机-免密登录Docker容器
    docker-文件系统出错处理
    python-redis集合模式
  • 原文地址:https://www.cnblogs.com/zhaojieln/p/4239571.html
Copyright © 2020-2023  润新知