模块化封装,兼容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. db2 中 SQL判断物理表是否存在、修改表名

    1.db2 中 SQL判断物理表是否存在 SELECT * FROM SYSIBM.SYSTABLES WHERE TID <> 0 AND Name = 'TABLE_NAME' AND ...

  2. C#转java

    懂C#的话,转Java也不是那么难,毕竟,语言语法还是相似的.尝试了下Java,说说自己的体会吧. 一,Java和C#都是完全面向对象的语言.在面向对象编程的三大原则方面,这两种语言接近得不能再接近. ...

  3. 新增扩展程序功能打包提交新版 WARNING ITMS-90473 警告问题

    1.问题描述 自从在主应用中加入SiriShortCut功能之后,打包程序上传至 iTunes Connect 就会出现警告,看其原因描述是CFBundleVersion主应用与子应用的不一致导致的 ...

  4. 「BZOJ 2342」「SHOI 2011」双倍回文「Manacher」

    题意 记\(s_R\)为\(s\)翻转后的串,求一个串最长的形如\(ss_Rss_R\)的子串长度 题解 这有一个复杂度明显\(O(n)\)的做法,思路来自网上某篇博客 一个双倍回文串肯定当且仅当本身 ...

  5. vue2.0使用ES6语法

    ES6 快速入门 什么是ES6? ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.Mozilla公司将在这个标准的基础上,推出Java ...

  6. dubbo源码分析--dubbo spi解析

    1. 什么叫SPI? 简单总结就是一种使用类名字符串来动态实例化java类的方式,也就是反射. 2. java SPI与Dubbo SPI有什么区别 (此图来自网上,我没有刻意去截图) 然后在这个文件 ...

  7. model中的Meta类

    通过一个内嵌类 "class Meta" 给你的 model 定义元数据, 类似下面这样: class Foo(models.Model): bar = models.CharFi ...

  8. [译文]Casperjs1.1.0参考文档-快速开始

    快速开始 只要casperjs被正确安装,你就可以开始写你的第一个脚本,你可以使用javascript或者coffiescript编译脚本. 提示: 如果你对javascript不是很熟悉,最好先看专 ...

  9. Hdp 4 window MR 注意事项

      1,本机未安装HDP, 在代码中加一个环境变量,跳过检查. Environment.SetEnvironmentVariable("HADOOP_HOME", @"D ...

  10. Anya and Cubes 搜索+map映射

    Anya loves to fold and stick. Today she decided to do just that. Anya has n cubes lying in a line an ...