• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >jquery > jquery+javascript编写国籍控件

jquery+javascript编写国籍控件

作者: 字体:[增加 减小] 来源:互联网 时间:2017-08-16

通过本文主要向大家介绍了jquery,javascript,国籍控件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一直苦于没有好的国籍控件可以用,于是抽空写了一个国籍控件,现分享给大家。

主要功能和界面介绍

国籍控件主要支持中文、英文过滤以及键盘上下事件。

源码介绍

国籍控件核心是两个文件,navtionality.js 和 mian.css。navtionality.js主要功能是国籍控件的DOM构建以及相应的事件绑定;main.css主要是用于渲染国籍控件的样式。而main.js是国籍控件的调用方法。

HTML结构

国籍控件要呈现在页面上,必须事先在页面中加以设置以供控件加载使用。control-nationality-suggest 是容器,input 是输入接收,nationality-suggest-list-container是提示列表,用于显示筛选后的国籍列表。

    <div class="container">
        <div class="control-nationality-suggest">
            <input type="text" class="nationality-suggest-input" />
            <div class="nationality-suggest-list-container">
                <div class="nationality-suggest-hint">输入中英文/代码搜索或↑↓选择</div>
                <ul class="nationality-suggest-list"></ul>
            </div>
        </div>
    </div>

navtionality.js 介绍

navtionality是国籍控件的核心,主要负责国籍控件的数据过滤,DOM呈现以及相应的事件绑定。init是整个控件的入口,通过传入的option参数,来确定具体的绑定对象。

var nationality = {
    data:[]
    strData: String,
    input: Object,
    list: Object,
    //功能描述:初始化
    init: function (option) {
    },
    //功能描述:选项设置
    setOption: function (option) {
    },
    //功能描述:绑定事件
    setEvent: function () {
    },
    //功能描述:绑定数据
    setData: function () {
    },
    //功能描述:搜索
    doSearch: function (key) {
    },
    //功能描述:设置列表
    setList: function (fvalue) {
    },
    //功能描述:绑定列表事件
    setListEvent: function () {
    },
    //功能描述:设置单项值
    setValue: function (item, hide) {
    },
    //功能描述:校验数据
    chkValue: function () {
    },
    //功能描述:鼠标事件
    setKeyDownEvent: function (event) {
    }
}

快速搜索介绍

在整个国籍控件中,搜索是最重要的一块,如何根据用户的输入筛选出相应的国籍数据。我们采取的方法是通过正则匹配法,我们把国籍数据首先进行格式化处理

比如原始的国籍数据是这样的:[{ id: "CN", en: "China", cn: "中国大陆" }, { id: "HK", en: "Hong Kong", cn: "中国香港" }, { id: "MO", en: "Macau", cn: "中国澳门" }

那么我们格式化后的数据就是这样的:#CN|China|中国大陆##HK|Hong Kong|中国香港##MO|Macau|中国澳门##

为什么要这么处理呢?是因为我们要借助正则表达式来实现数据的快速匹配。

    //功能描述:搜索
    doSearch: function (key) {
        if (!key || key == "") return ["CN|China|中国大陆", "HK|Hong Kong|中国香港", "MO|Macau|中国澳门", "TW|Taiwan|中国台湾"];
        var reg = new RegExp("#[^#]*?" + key + "[^#]*?#", "gi");
        return this.strData.match(reg);
    }

想必大家看到我们的正则匹配,应该明白一大半了,没错,我们通过将原先的数组转换成字符串的方式,利用正则快速实现数据的筛选过滤。

对比下我们通过遍历实现的搜索方式,可以发现正则的效率会高很多。

    //功能描述:搜索
    doSearch: function (key) {
        if (!key || key == "") return ["CN|China|中国大陆", "HK|Hong Kong|中国香港", "MO|Macau|中国澳门", "TW|Taiwan|中国台湾"];
        var search = [];
        for(var i=0; i< this.data.length; i++){
            if(this.data[i].id.indexOf(key) >= 0 || this.data[i].en.indexOf(key) >= 0 || this.data[i].cn.indexOf(key) >= 0){
                search.push(this.data[i]);
            }
        }
        return search;
    }

main.js 介绍

main是调用国籍控件的方法,通过遍历页面中的calss为control-nationality-suggest的DOM对象来绑定国籍控件。

 $(".control-nationality-suggest").each(function () {
        var input = $(this).find(".nationality-suggest-input");
        var list = $(this).find(".nationality-suggest-list");
        new nationality({ input: input, list: list });
})

演示与下载

查看DEMO DEMO下载

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 基于jQuery对象和DOM对象和字符串之间的转化实例
  • jquery+css实现简单的图片轮播效果
  • 使用jQuery实现鼠标点击左右按钮滑动切换
  • jQuery实现上传图片前预览效果功能
  • jQuery初级教程之网站品牌列表效果
  • 基于jquery实现多选下拉列表
  • jQuery接受后台传递的List的实例详解
  • 详解jquery选择器的原理
  • jQuery上传插件webupload使用方法
  • 关于jquery form表单序列化的注意事项详解

相关文章

  • 2017-08-16jquery 为a标签绑定click事件示例代码
  • 2017-08-16jquery右下角弹出提示框示例代码
  • 2017-08-16详解jQuery中的事件
  • 2017-08-16jQuery实现html表格动态添加新行的方法
  • 2017-08-16jquery禁用右键示例
  • 2017-08-16jquery弹出层类代码分享
  • 2017-08-16基于JQUERY的多级联动代码
  • 2017-08-16jQuery中closest()函数用法实例
  • 2017-08-16JQuery实现图片轮播效果
  • 2017-08-16jquery mobile开发常见问题分析

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • jquery 实时监听输入框值变化的完美方法(必看)
    • jquery实现可自动收缩的TAB网页选项卡代码
    • AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
    • jQuery使用append在html元素后同时添加多项内容的方法
    • jQuery根据name属性进行查找的用法分析
    • JQuery中层次选择器用法实例详解
    • 概述jQuery的元素筛选
    • jQuery插件MovingBoxes实现左右滑动中间放大图片效果
    • 用jQuery与JSONP轻松解决跨域访问的问题
    • 详解JavaScript for循环中发送AJAX请求问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有