`

javascript auto complete

阅读更多
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ajax Auto Complete</title>
<style type="text/css">
.mouseOut {
background: #708090;
color: #FFFAFA;
}

.mouseOver {
background: #FFFAFA;
color: #000000;
}
</style>

<script type="text/javascript">
    var xmlHttp;
    var completeDiv;
    var inputField;
    var nameTable;
    var nameTableBody;

    function createXMLHttpRequest() {
        if (window.ActiveXObject) {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else if (window.XMLHttpRequest) {
            xmlHttp = new XMLHttpRequest();
        }
    }

    function initVars() {
        inputField = document.getElementById("names");
        nameTable = document.getElementById("name_table");
        completeDiv = document.getElementById("popup");
        nameTableBody = document.getElementById("name_table_body");
    }

    function findNames() {
        initVars();
        var mails = ["@163.com","@sina.com","@gmail.com"];
        if (inputField.value.length > 0) {
            clearNames();
            var size = mails.length;
            setOffsets();
        var row, cell, txtNode;
        var dizhi = inputField.value;
            for (var i = 0; i < size; i++) {
                var nextNode = dizhi + mails[i];
                row = document.createElement("tr");
                cell = document.createElement("td");
                cell.onmouseout = function() {this.className='mouseOver';};
                cell.onmouseover = function() {this.className='mouseOut';};
                cell.setAttribute("bgcolor", "#FFFAFA");
                cell.setAttribute("border", "0");
                cell.onclick = function() { populateName(this); } ;
                txtNode = document.createTextNode(nextNode);
                cell.appendChild(txtNode);
                row.appendChild(cell);
                nameTableBody.appendChild(row);
            }
return;
        }

        if (inputField.value.length > 0) {
            createXMLHttpRequest();
            var url = "AutoCompleteServlet?names=" + escape(inputField.value);
            xmlHttp.open("GET", url, true);
            xmlHttp.onreadystatechange = callback;
            xmlHttp.send(null);
        } else {
            clearNames();
        }
    }

    function callback() {
        if (xmlHttp.readyState == 4) {
            if (xmlHttp.status == 200) {
                var name = xmlHttp.responseXML.getElementsByTagName("name")[0].firstChild.data;
                setNames(xmlHttp.responseXML.getElementsByTagName("name"));
            } else if (xmlHttp.status == 204){
                clearNames();
            }
        }
    }

    function setNames(the_names) {
        clearNames();
        var size = the_names.length;
        setOffsets();
        var row, cell, txtNode;
        for (var i = 0; i < size; i++) {
            var nextNode = the_names[i].firstChild.data;
            row = document.createElement("tr");
            cell = document.createElement("td");
            cell.onmouseout = function() {this.className='mouseOver';};
            cell.onmouseover = function() {this.className='mouseOut';};
            cell.setAttribute("bgcolor", "#FFFAFA");
            cell.setAttribute("border", "0");
            cell.onclick = function() { populateName(this); } ;
            txtNode = document.createTextNode(nextNode);
            cell.appendChild(txtNode);
            row.appendChild(cell);
            nameTableBody.appendChild(row);
        }
    }

    function setOffsets() {
        var end = inputField.offsetWidth;
        var left = calculateOffsetLeft(inputField);
        var top = calculateOffsetTop(inputField) + inputField.offsetHeight;
        completeDiv.style.border = "black 1px solid";
        completeDiv.style.left = left + "px";
        completeDiv.style.top = top + "px";
        nameTable.style.width = end + "px";
    }
   
    function calculateOffsetLeft(field) {
      return calculateOffset(field, "offsetLeft");
    }

    function calculateOffsetTop(field) {
      return calculateOffset(field, "offsetTop");
    }

    function calculateOffset(field, attr) {
      var offset = 0;
      while(field) {
        offset += field[attr];
        field = field.offsetParent;
      }
      return offset;
    }

    function populateName(cell) {
        inputField.value = cell.firstChild.nodeValue;
        clearNames();
    }

    function clearNames() {
        var ind = nameTableBody.childNodes.length;
        for (var i = ind - 1; i >= 0 ; i--) {
             nameTableBody.removeChild(nameTableBody.childNodes[i]);
        }
        completeDiv.style.border = "none";
    }
</script>
</head>
<body>
<h1>showAllEmailFixes.html</h1>
Names:
<input type="text" size="20" id="names" onkeyup="findNames();" style="height: 20;" />
<div style="position: absolute;" id="popup">
<table id="name_table" bgcolor="#FFFAFA" border="0" cellspacing="0" cellpadding="0" />
<tbody id="name_table_body"></tbody>
</table>
</div>
</body>
</html>
分享到:
评论

相关推荐

    auto-complete 自动完成 智能提示 代码联想

    在编程和软件开发领域,"自动完成"(Auto-Complete)和"智能提示"(Intelligent Suggestion)是提升效率和生产力的关键特性。这些功能在编写代码时提供实时的建议,帮助开发者快速输入复杂的语法结构,减少手动输入...

    使用JQuery自动完成插件Auto Complete详解

    jQuery Auto Complete 插件是一个非常实用的工具,用于在网页中实现自动填充功能,尤其适用于搜索框,帮助用户快速找到他们正在寻找的信息。本篇文章将深入探讨如何使用jQuery Auto Complete插件,以及如何将其整合...

    auto complete and photo demo project

    标题中的“auto complete”指的是自动补全功能,这是一种常见的用户界面特性,常见于搜索框、输入字段等,能够根据用户输入的字符预测并提供可能的完成选项,提高输入效率。通常,这种功能是通过匹配历史记录、...

    自己写的 auto complete 效率还不错

    标题中的“自己写的 auto complete 效率还不错”表明这是一个自定义实现的自动补全功能,相较于使用jQuery的 autocomplete 插件,它在性能上有所提升,并且可能在兼容性和用户体验方面更加符合作者的需求。...

    auto-complete-address

    "auto-complete-address" 是一个基于JavaScript的自动补全地址库,它主要致力于提供高效、便捷的地址搜索和建议功能,通常用于网页上的地理定位输入。这个库可能包含一系列的JavaScript文件,HTML示例,以及可能的...

    Tokyotech Matrix Auto Complete-crx插件

    Tokyotech Matrix Auto Complete是一款专为英语用户设计的Chrome浏览器扩展程序,主要目的是为了简化东京科技(Tokyo Tech)门户的登录过程。该插件针对那些频繁访问Tokyo Tech Portal的用户,提供了一种快速、便捷...

    html-tag-auto-complete:Atom Editor插件,可自动完成带有类和ID的html标签

    html-tag-auto-complete 一个简单的atom编辑器程序包,可以自动完成带有/不带有类和id的html元素。 特征 没什么,但是确实可以做 只要您在其上执行的单词是有效的html标记(例如div , p , abbr等),就可以与任何...

    auto-complete

    在IT领域,自动完成(Auto-Complete)是一种常见的功能,特别是在网页输入框或者搜索框中,它能够根据用户输入的部分文字,提供相关的建议或匹配结果,以提高用户体验和输入效率。这里的"auto-complete"指的是一个...

    auto-complete.js

    我是怎么做的? 我使用,和&lt;input&gt;完成此测试。 输入字母时, onkeyup事件会触发query()处理函数以查询自动完成功能。 每个已确认的输入将作为列表条目插入到跨度中。 ...插入完成后,将为下一次插入创建新...

    jquery-select-auto-complete-codes.rar_Jquery的搜索框提示

    标题 "jquery-select-auto-complete-codes.rar" 涉及的是一个使用JQuery实现的自动完成功能,特别针对搜索框的交互设计。JQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画效果以及Ajax交互。在...

    一个非常轻量且功能强大的原始 JavaScript 完成建议器 .zip

    演示和文档https://goodies.pixabay.com/javascript/auto-complete/demo.html特征轻量级5.4 kB JavaScript - gzip 压缩后小于 2.4 kB完全灵活的数据源智能缓存、延迟和最小字符设置回调变更日志版本 1.0.4 - 2016/02...

    Auto_Complete_Suggestions_Box:用CodeSandbox创建

    在IT行业中,自动补全建议框(Auto Complete Suggestions Box)是一种常见的用户界面组件,它能够提升用户体验,尤其是在输入框中输入文本时。本项目利用JavaScript技术,在CodeSandbox这个在线开发环境中实现了一个...

    ui-component-auto-complete:自动完成ui组件问题

    케이스주제 Q.동시에동시에에에출력하는출력하는출력하는출력하는출력하는출력하는능을능을능을능을。기능요구사항 de보드이벤트를지연시간(debounce기능)을请求줄인다。 리리스트는사라진다。...

    vue2autocomplete一个Vue2的文本输入自动完成组件

    Vue2Autocomplete是针对Vue 2框架设计的一个高效、可定制化的文本输入自动完成组件。这个组件主要用于提高用户在输入时的效率,通过提供实时的建议列表,帮助用户快速找到并选择所需的内容。Vue.js是一个轻量级但...

    ember-auto-complete

    自动完成 此自述文件概述了在此 Ember 插件上进行协作的详细信息。安装git clone这个仓库npm install bower install跑步ember server 在访问您的应用程序。运行测试ember test ember test --server建造ember build ...

    tui.auto-complete:TOAST UI 自动完成

    :triangular_flag: 目录 通过包管理器新产品经理凉亭通过内容交付网络 (CDN) 下载源文件 :hammer: 用法HTML JavaScript 在浏览器环境中使用命名空间在节点环境中使用模块格式 :nut_and_bolt: 依赖 :globe_showing_...

    autocomplete下拉框自动填充实例.rar

    当用户在输入框中输入字符时,JavaScript监听键盘事件,根据已输入的文本向服务器或本地数据源发起请求,获取匹配的建议列表,并显示在下拉框中。用户可以从这些推荐选项中选择,或者继续输入,直到找到合适的文本。...

    vant的field组件(autocomplete)

    - `index.js`: 这个JavaScript文件通常包含了组件的主要逻辑,包括组件的定义、属性绑定、事件处理等。在这里,你会看到`AutoCompleteField`组件的实现代码。 - `index.json`: JSON配置文件,定义了组件的对外属性...

    react-auto-complete-search-bar

    这是什么? 一个简单的自动完成搜索栏,使用IMDB API并链接到IMDB页面。怎么跑纱纱线起头特征来自imdb API的实际数据指向实际imdb页面的传出链接键盘上/下/输入处理取消用户输入的反跳,以免发送过多的API请求

Global site tag (gtag.js) - Google Analytics