• input添加邮箱的时候自动显示后缀


    一、实现效果:

    二、实现代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
        <title>input添加邮箱的时候自动显示后缀</title>
        <script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
        <script type="text/javascript">
            $(function () {
                $("#loginName").changeTips({
                    divTip: ".on_changes"
                });
            })
        </script>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
            }
    
            .login {
                 400px;
                margin: 0 auto;
                background: #EBEBEB;
                position: relative;
            }
    
            input {
                 230px;
                height: 28px;
                margin: 10px 0;
                line-height: 28px;
            }
    
            .login .on_changes {
                 230px;
                position: absolute;
                top: 40px;
                list-style: none;
                background: #FFF;
                border: 1px solid #000;
                display: none;
            }
    
                .login .on_changes li {
                    margin: 8px;
                    padding: 4px;
                }
    
                    .login .on_changes li.active {
                        background: #CEE7FF;
                    }
        </style>
    </head>
    <body>
        <div class="login">
            <div class="ln">
                <input type="text" maxlength="128" name="loginName" id="loginName" placeholder="邮箱/会员帐号/手机号" /></div>
            <ul class="on_changes">
                <li email=""></li>
                <li email="@sina.com"></li>
                <li email="@163.com"></li>
                <li email="@qq.com"></li>
                <li email="@hotmail.com"></li>
                <li email="@126.com"></li>
                <li email="@gmail.com"></li>
                <li email="@yahoo.com"></li>
            </ul>
        </div>
    </body>
    </html>
    
    <!--2.jquery 代码-->
    
    <script type="text/javascript">
        (function ($) {
            $.fn.extend({
                "changeTips": function (value) {
                    value = $.extend({
                        divTip: ""
                    }, value)
    
                    var $this = $(this);
                    var indexLi = 0;
    
                    //点击document隐藏下拉层
                    $(document).click(function (event) {
                        if ($(event.target).attr("class") == value.divTip || $(event.target).is("li")) {
                            var liVal = $(event.target).text();
                            $this.val(liVal);
                            blus();
                        } else {
                            blus();
                        }
                    })
    
                    //隐藏下拉层
                    function blus() {
                        $(value.divTip).hide();
                    }
    
                    //键盘上下执行的函数
                    function keychang(up) {
                        if (up == "up") {
                            if (indexLi == 1) {
                                indexLi = $(value.divTip).children().length - 1;
                            } else {
                                indexLi--;
                            }
                        } else {
                            if (indexLi == $(value.divTip).children().length - 1) {
                                indexLi = 1;
                            } else {
                                indexLi++;
                            }
                        }
                        $(value.divTip).children().eq(indexLi).addClass("active").siblings().removeClass();
                    }
    
                    //值发生改变时
                    function valChange() {
                        var tex = $this.val();//输入框的值
                        var fronts = "";//存放含有“@”之前的字符串
                        var af = /@/;
                        var regMail = new RegExp(tex.substring(tex.indexOf("@")));//有“@”之后的字符串,注意正则字面量方法,是不能用变量的。所以这里用的是new方式。
    
    
                        //让提示层显示,并对里面的LI遍历
                        if ($this.val() == "") {
                            blus();
                        } else {
                            $(value.divTip).
                            show().
                            children().
                            each(function (index) {
                                var valAttr = $(this).attr("email");
                                if (index == 1) { $(this).text(tex).addClass("active").siblings().removeClass(); }
                                //索引值大于1的LI元素进处处理
                                if (index > 1) {
                                    //当输入的值有“@”的时候
                                    if (af.test(tex)) {
                                        //如果含有“@”就截取输入框这个符号之前的字符串
                                        fronts = tex.substring(tex.indexOf("@"), 0);
                                        $(this).text(fronts + valAttr);
                                        //判断输入的值“@”之后的值,是否含有和LI的email属性
                                        if (regMail.test($(this).attr("email"))) {
                                            $(this).show();
                                        } else {
                                            if (index > 1) {
                                                $(this).hide();
                                            }
                                        }
    
                                    }
                                        //当输入的值没有“@”的时候
                                    else {
                                        $(this).text(tex + valAttr);
                                    }
                                }
                            })
                        }
                    }
    
    
                    //输入框值发生改变的时候执行函数,这里的事件用判断处理浏览器兼容性;
                    if ($.browser) {
                        $(this).bind("propertychange", function () {
                            valChange();
                        })
                    } else {
                        $(this).bind("input", function () {
                            valChange();
                        })
                    }
                    //鼠标点击和悬停LI
                    $(value.divTip).children().
                    hover(function () {
                        indexLi = $(this).index();//获取当前鼠标悬停时的LI索引值;
                        if ($(this).index() != 0) {
                            $(this).addClass("active").siblings().removeClass();
                        }
                    })
    
    
                    //按键盘的上下移动LI的背景色
                    $this.keydown(function (event) {
                        if (event.which == 38) {//向上
                            keychang("up")
                        } else if (event.which == 40) {//向下
                            keychang()
                        } else if (event.which == 13) { //回车
                            var liVal = $(value.divTip).children().eq(indexLi).text();
                            $this.val(liVal);
                            blus();
                        }
                    })
                }
            })
        })(jQuery)
    </script>

     参考链接:https://www.cnblogs.com/zlx7/p/4922769.html

  • 相关阅读:
    JDBC
    两道关于回溯法,分支限界法的算法题
    旅行售货员问题
    jdbc学习
    mysql简单练习
    取会邮件客户端中的密码
    触发器的使用
    事务的数据一致性测试
    读取其他软件listview控件的内容
    sqlserver2008 ,只能选C盘目录,不能选其它盘目录
  • 原文地址:https://www.cnblogs.com/xiaohong520789/p/9877127.html
Copyright © 2020-2023  润新知