模块化封装,兼容seajs

/**
* User: c3t
* Date: 14-3-25
* Time: 下午4:16
*/ define(function (require, exports, module) {
return function (jQuery) {
(function ($) {
var setting = null;
$.fn.keywordInput = function (opts) {
setting = $.extend({
number: 5, //关键字数量限定
msg: "请输入关键字,通过逗号或者回车确认"
}, opts || {});
init(this);
this.keyup(inputKeywords);
//通过事件委派。对新加入的标签添加事件
$("#keywords-wrap").on("click", ".keyword-shut", function (event) {
$(this).parent(".keyword-in").remove();
event.preventDefault();
}); };
function init(input) {
$(input).val(setting.msg);
$(input).addClass("keyword-input");
$(input).wrap("<div id='keyword-container'></div>").before("<div id='keywords-wrap'></div>"); $(input).focus(function () {
$(this).val("");
}); $(input).blur(function () {
$(this).val(setting.msg);
});
} function inputKeywords(event) {
var code = event.keyCode;
if (code == 188 || code == 13) {
var c = $(this).val();
if(c!="") {
if($(".keyword-in").length >=setting.number){
alert("最多只能允许添加"+setting.number+"个关键字");
event.preventDefault();
return false;
}
//防止关键字重复
var aks = $("input[name='aks']");
for(var i=0;i<aks.length;i++) {
if($(aks[i]).val()==c) {
alert("不能添加重复的关键字");
event.preventDefault();
return false;
}
} var ki = createKeyWord(c);
$('#keywords-wrap').append(ki);
$(this).val("");
}
} } function createKeyWord(val) {
return "<div class='keyword-in'>"+
"<span>"+val+"</span>"+
"<a href='#' class='keyword-shut'>×</a>"+
"<input type='hidden' name='aks' value='"+val+"'/>"+
"</div>";
}
})(jQuery);
}
});

css 样式

#keyword-container {
border: 1px solid #bbb;
width: 300px;
} input.keyword-input {
border: none;
width: 300px;
color: #aaa;
height: 28px;
} .keyword-in {
float: left;
font-size: 12px;
margin: 3px;
background: #3fa7cb;
color: #fff;
} .keyword-shut:link, .keyword-shut:visited {
color: #fff;
text-decoration: none;
} a.keyword-shut:hover {
color: #ff0000;
}

页面

 <input type="text" id="keyword-input" value=""/>

调用

$("#keyword-input").keywordInput();

jquery 添加关键字小插件的更多相关文章

  1. jquery TAB切换小插件

    //tab切换 ;(function($, window, document, undefined) { $.fn.tab = function(options) { var defaults = { ...

  2. 闲聊select和input常用的小插件

    前言 在pc端的项目中,经常会用到表单标签,莫过于是select和input这两种,这两种相当常用.但往往原生的功能不尽人意,即使 input中type有n多属性,甚至连时间控件都有,但仍旧满足不了我 ...

  3. Jquery 添加插件

    原文:http://www.iteye.com/topic/545971 jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法 ...

  4. 黑色半透明镂空遮罩指引效果实现jQuery小插件

    /*! * by zhangxinxu(.com) 2017-05-18 * 新版上线时候的黑色半透明镂空遮罩指引效果实现jQuery小插件 * 兼容到IE8+ * MIT使用协议,使用时候保留版权 ...

  5. 基于HTML5 audio元素播放声音jQuery小插件

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1609 一.前面的些唠 ...

  6. jquery添加插件

    转自:https://www.cnblogs.com/joey0210/p/3408349.html 前言 如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquer ...

  7. jQuery自定义滚动条样式插件mCustomScrollbar

    如果你构建一个很有特色和创意的网页,那么肯定希望定义网页中的滚动条样式,这方面的 jQuery 插件比较不错的,有两个:jScrollPane 和 mCustomScrollbar. 关于 jScro ...

  8. 11个好用的jQuery拖拽拖放插件

    这次我们整理一些拖拽播放类型的jQuery插件,这些可能不是很常用,但偶尔会有网站设计项目用到,特别是后台相关的开发项目,这个拖放排序功能一般都会有,所以适合大家收藏起来,方便日后使用.接下来一起看盾 ...

  9. jQuery提供的小方法

    jQuery提供的小方法: 1.选择器 + 事件 + 函数 = 复杂的交互 2.循环处理与选择器匹配的各个元素:each() $("#").each(function(){     ...

随机推荐

  1. 使用JMeter测试基于WebSocket协议的服务

    使用JMeter测试基于WebSocket协议的服务 :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba( ...

  2. [.net 多线程]Task

    C# 异步编程Task整理(一) c# .Net并行和多线程编程之Task学习记录! .NET 实现并行的几种方式(一) Dispatcher介绍 [C#学习笔记]使用C#中的Dispatcher 用 ...

  3. 大数据技术之_11_HBase学习_01_HBase 简介+HBase 安装+HBase Shell 操作+HBase 数据结构+HBase 原理

    第1章 HBase 简介1.1 什么是 HBase1.2 HBase 特点1.3 HBase 架构1.3 HBase 中的角色1.3.1 HMaster1.3.2 RegionServer1.3.3 ...

  4. C# LINQ(5)

    目前都是说的单数据差距,如果多数据进行查询LINQ该如何呢? 那么LINQ就应该使用关键字 join on equals 现有代码: static void Main(string[] args) { ...

  5. 处理json

    一.json json是一个字符串,只不过长得比较像字典.使用json函数需要导入json库,即import json json的格式只有双引号,不可用单引号 1.json.loads()和json. ...

  6. c++多线程基础5(future,async,packaged_task,promise)

    以下内容整理自:https://www.cnblogs.com/my_life/articles/5401190.html future 是一个能从其他地方获取到一个值的对象,如果是在不同的线程中,则 ...

  7. centos7 docker 安装 mysql5.7.24 导入12G的sql

    先在CentOS7里面安装docker Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker .通过 uname - ...

  8. get与post中文乱码问题

    Jsp默认的字符编码格式是iso-8859-1 因为post方法与get方法传递参数的方式不一样,所以有不同的解决方法. 一.post乱码解决方法: 1.设置请求和响应的编码方式 //设置请求的编码格 ...

  9. Jenkins项目部署使用教程-----01安装

    基本配置: 1.Linux安装配置jdk环境 1.1.上传到 Linux 服务器:例如: 上传至: cd /usr/local 1.2.解压: rpm -ivh jdk-8u111-linux-x64 ...

  10. jquery循环语句if-else if-else

    jquery循环语句if-else if-elsecallbackFun()函数,开始是写的if-if-else.结果是不管第一个if有没有匹配到,会再次判断, 如果匹配到第二个if,则第二个if中的 ...