html5 datalist

邮箱:<input type="email" id="email" list="emailList" name="off_autocomplete" />
<datalist id="emailList">
    <option value="*@qq.com">
    <option value="*@163.com">
    <option value="*@gmail.com">
    <option value="*@yahoo.com.cn">
    <option value="*@126.com">
</datalist>

<script>
    var eleList = document.getElementById("emailList")
            , eleMail = document.getElementById("email")
            , htmlListInit = '', arrEmailList = [];

    if (eleMail && eleList && (htmlListInit = eleList.innerHTML) !== '') {
        // 得到类似["qq.com", "163.com", "gmail.com", ...]的数据
        arrEmailList = [].slice.call(eleList.getElementsByTagName("option")).map(function(option) {
            return option.value.replace("*@", "");
        });

        eleMail.fnListReplace = function() {
            var arrValue = this.value.trim().split("@");
            // 修复FireFox浏览器下无限input问题
            // 如果值不完全匹配某option值,执行动态替换
            if (arrValue.length !== 2 || arrEmailList.indexOf(arrValue[1]) === -1) {
                eleList.innerHTML = htmlListInit.replace(/\*/g, arrValue[0]);
            }
            return this;
        };
        // 绑定输入事件侦听
        eleMail.addEventListener("input", function() {
            this.fnListReplace.call(this);
        }, false);

        //  载入即匹配
        eleMail.fnListReplace.call(eleMail).focus();
    } else {
        eleList = document.createElement("datalist");
        eleList.innerHTML = '<p class=sorry>抱歉,当前浏览器不支持HTML5 datalist.</p>';
        eleMail.parentNode.appendChild(eleList);
    }
</script>

<style>
    input::-webkit-calendar-picker-indicator {
        display: none;
        -webkit-appearance: none;
    }
</style>
你最喜欢的浏览器是: <input list="browsers" type="text">
<datalist id="browsers">
    <option value="Internet Explorer">
    <option value="Firefox">
    <option value="Chrome">
    <option value="Opera">
    <option value="Safari">
</datalist>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值