模块化封装,兼容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. sql server 简单语句整合

    1.去重distinct , group by select distinct userid,username from 表名 select userid,username from 表名 group ...

  2. 微信第三方平台开头篇--MVC代码(第三方获取ticket和公众号授权)

    微信公众号授权给开放平台 公众号授权给第三方平台的技术实现流程比较简单 这个步骤遗漏了开头获取第三方平台自己的accessToken 先说下流程 如何注册开放平台的第三方信息看截图 其他不说了,此文只 ...

  3. C#多线程编程实战1.6线程优先级

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  4. .net core .NET Core与.NET Framework、Mono之间的关系

    .NET Core与.NET Framework.Mono之间的关系 首先想要知道.NET Core与.NET Framework.Mono之间的关系,就必须他们分别是什么,有什么用途? 一. .ne ...

  5. 一文读懂spring boot 和微服务的关系

    欢迎访问网易云社区,了解更多网易技术产品运营经验. Spring Boot 和微服务没关系, Java 微服务治理框架普遍用的是 Spring Cloud. Spring Boot 产生的背景,是开发 ...

  6. Ajax GET

    $ajax的post请求提交方式: Controller: @RequestMapping("/emps") @ResponseBody public Msg getEmps(@R ...

  7. Socket 简易静态服务器 WPF MVVM模式(一)

    整体代码下载 主要实现功能: Socket的简单应用 可修改IP和端口 显示来访信息 界面设计: 界面采用MVVM设计,很简陋. 前台的主要目的是 输入IP地址 输入端口 输入文件目录 开启监听和停止 ...

  8. springboot项目部署运行(后台);端口被占用;

    打包: mvn clean package -Pprod -Dmaven.test.skip=true -Pprod 使用生产环境配置: -DskipTests,不执行测试用例,但编译测试用例类生成相 ...

  9. 已经上架的app在AppStore上搜不到的解决办法

    1.问题呈现 相信很多人都遇到过这个问题,天天刷iTunes connect,终于发现app已经上架了,兴奋的跑过去告诉老板,老板说好,大家都装一个吧! 这时候只能一边不慌不忙地甩锅给苹果,一边快马加 ...

  10. [AGC005C]Tree Restoring 构造

    Description ​ 给出一个数组a,要求构造一颗树,使节点x距离最远的点的距离为\(a_x\). Input ​ 第一行一个正整数NN(2≤N≤1002≤N≤100) ​ 接下来一行,有NN个 ...