模块化封装,兼容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. Mysql初识数据库《五》初识sql语句

    初识sql语句 有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写 mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要 ...

  2. 【Thread】线程工厂-ThreadFactory

    ThreadFactory---线程工厂 在apollo源码中有这么一段代码 ExecutorService m_longPollingService = Executors.newSingleThr ...

  3. Jquery each ajax 赋值

    <script type="text/javascript"> $(document).ready(function () { $("#mylist li s ...

  4. c#优秀文章

    文件传输示例]C# WinForm WebSocket (非浏览器):http://bbs.cskin.net/thread-4431-1-1.html NanUI for Winform发布,让Wi ...

  5. phpstorm利用database连接mysql数据库

    首先声明一点,database只能连接一个已存在的数据库,不能创建数据库 连接一个已存在的数据库步骤: 1,找到database:连续点击俩次shift,输入database就能找到了 2,点击绿色的 ...

  6. springboot整合activemq加入会签,自动重发机制,持久化

    消费者客户端成功接收一条消息的标志是:这条消息被签收. 消费者客户端成功接收一条消息一般包括三个阶段:          1.消费者接收消息,也即从MessageConsumer的receive方法返 ...

  7. PHP7 关于变量的基本判断

    刚学 PHP ,一些基础还不太牢固,边实践边记录. about NULL $class_name = null; 语句结束后,$class_name 是空,没有,什么都没有的“空”.用 is_null ...

  8. 【算法笔记】B1022 D进制的A+B

    1022 D进制的A+B (20 分) 输入两个非负 10 进制整数 A 和 B (≤2​30​​−1),输出 A+B 的 D (1<D≤10)进制数. 输入格式: 输入在一行中依次给出 3 个 ...

  9. Tarjan算法打包总结(求强连通分量、割点和Tarjan-LCA)

    目录 Tarjan打包总结(求强连通分量.割点和Tarjan-LCA) 强连通分量&缩点 原理 伪代码 板子(C++) 割点 原理 伪代码 最近公共祖先(LCA) 原理 伪代码 板子 Tarj ...

  10. 江西理工大学南昌校区排名赛 A: 单身狗的卡片游戏

    题目描述 萌樱花是一只单身狗. 萌樱花今天在桌子上摆出了N张卡片,每张卡片i写着一个数字Ai 他不喜欢卡片上的数字多个出现,于是他想搞点事情拆分它们. 从桌子上选出三张卡,去掉一张数字最大,一张数字最 ...