jQuery/javascript实现IP/Mask自动联想功能
之前做一个云计算的项目,涉及到一个安全组自动联想的功能,思想是这样的:
主要实现方式是:后台处理securityGroupName和SecurityGroupName的组合列表,并且在前台做相应的处理,处理为数组对象,此时对名称和id的联想基本实现,如果再加上ip/task,只需做一些处理,创建一个新数组,拼接到之前的name和id的数组上,这时候就实现了securityGroupId和securityGroupName以及ip/mask之间随意的联想输入。
- /**
- * IP自动联想
- *
- * @param input IP
- * @return IP/Task
- */
- function getIpArray(input){
- var ipArray = input.split('.');
- for( var i = 0; i < 4; i++){
- if (ipArray[i] == undefined || ipArray[i] == ''){
- ipArray[i] = 0;
- }
- //
- // if(ipArray[i].indexOf('0') == 0 && ipArray[i].length > 1){
- // ipArray[i] = ipArray[i].substring(1, ipArray[i].length);
- // }
- }
- return ipArray;
- }
- function every(arr, func){
- var aa = [];
- for( var i = 0; i < arr.length; i++){
- aa.push(func(arr[i]));
- }
- return aa;
- }
- function indexOfEnd(str){
- for( var i = str.length - 1; i >= 0; i--){
- if (str.charAt(i) == '1') {
- return 8 - (str.length - i) + 1;
- }
- }
- return 0;
- }
- function getPermissions(input){
- var ipArray = getIpArray(input);
- var ip = ipArray.join('.');
- var binaryIpArray = every(ipArray, function(oct){
- return Number(oct).toString(2);
- });
- var yanma = 0;
- for( var i = binaryIpArray.length - 1; i >= 0; i--){
- if(binaryIpArray[i] != 0){
- yanma = indexOfEnd(binaryIpArray[i]) + i * 8;
- break;
- }
- }
- var abc = [ 8, 16, 24, 32 ];
- var rstArray = [ ip + '/' + yanma ];
- for( var i = 0; i < abc.length; i++){
- if(abc[i] > yanma){
- rstArray.push(ip + '/' + abc[i]);
- }
- }
- return rstArray;
- }
这里主要是在键盘事件触发的时候的一个脚本,实现自动联想
- /**
- * 创建安全组自动联想DOM
- */
- function createSgDom(input){
- var arrayObj = new Array();
- var ary = new Array();
- this.setNewAry([]);
- this.setAry([]);
- var autoData = jsonData.substring(1, jsonData.length -1).split(', ');
- for ( var element in autoData) {
- arrayObj.push(autoData[element]);
- }
- var permissions = /^((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))$/;
- var ip_1 = /^((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))[\.]?){1,3})$/;
- var str = /^[a-zA-Z]*([a-zA-Z]|[-])*$/;
- if(null != input && !str.test(input)){
- if(ip_1.test(input) || permissions.test(input)){
- var except = false;
- if(input.indexOf('.') > -1){
- var value = input.split('.');
- for(var val in value){
- var inVal = value[val];
- if(inVal.indexOf('0') == 0 && inVal.length > 1){
- except = true;
- }
- if(inVal>255){
- except = true;
- }
- }
- } else {
- if(input>255){
- except = true;
- }
- }
- if(!except){
- var ips = getPermissions(input);
- for(var ip in ips){
- ary.push(ips[ip]);
- }
- }
- }
- }
- if(ary != null){
- newAry = arrayObj.concat(ary);
- } else {
- newAry = arrayObj;
- }
- this.setNewAry(newAry);
- $('#suggest_value').autocomplete({
- source: this.getNewAry(),
- minLength: 0,
- close: function(event, ui){
- },
- focus: function(event, ui){
- return false;
- },
- change: function(event, ui){
- },
- select: function(event, ui){
- if(ui.item.label.indexOf('(') > -1 && ui.item.label.indexOf(')') > -1){
- ui.item.value = ui.item.label.substring(0, ui.item.label.indexOf('('));
- }else{
- ui.item.value = ui.item.label.substring(0, ui.item.label.length);
- }
- }
- });
- }
最后:
- //在输入框加上一个keyup事件,指定执行脚本:createSgDom($('#suggest_value').val());
- // 引入自动联想插件和上面处理ip掩码的脚本
- <script type="text/javascript" src="theme/default/js/cbms/ip-permissions.js"></script>
- <%-- <script src="theme/default/jquery-ui/js/jquery-1.8.3.js" type="text/javascript"></script> --%>
- <script src="theme/default/jquery-ui/js/jquery-ui-1.8.24.custom.min.js" type="text/javascript"></script>
jQuery/javascript实现IP/Mask自动联想功能的更多相关文章
- Java开发工具MyEclipse的设置自动联想功能
最近初学Java,正在使用MyEclipse来编写新的项目,刚开始打开MyEclipse感觉这个工具既陌生又熟悉,熟悉之处在于编辑器的几大共通之处它都具备,比如说基本的设置.编辑区.调试区都是类似的, ...
- UITextField关闭自动联想功能
在textField输入内容时,如果内容为英文,输入的英文如果不正确的单词就是有红色的线报警,关闭英文自动联想功能 self.autocorrectionType = UITextAutocorrec ...
- Java初学者不可不知的MyEclipse的设置技巧(自动联想功能)
最近初学Java,正在使用MyEclipse来编写新的项目,刚开始打开MyEclipse感觉这个工具既陌生又熟悉,熟悉之处在于编辑器的几大共通之处它都具备,比如说基本的设置.编辑区.调试区都是类似的, ...
- Myeclipse设置自动联想功能
///声明,博客园暂无转载功能,这篇博客是转载自贞心真义. 最近初学Java,正在使用MyEclipse来编写新的项目,刚开始打开MyEclipse感觉这个工具既陌生又熟悉,熟悉之处在于编辑器的几大共 ...
- IDEA 代码自动补全/自动联想 功能
IDEA 的代码补全/自动联想功能,可以仅仅输入几个字母,自动补全一整段代码,非常舒服. 代码自动联想功能在 设置 -> Editor -> Live Templates 查看,很多都非常 ...
- 基于JQuery实现的文本框自动填充功能
1. 实现的方法 /* * js实现的文本框的自动完成功能 */ function doAutoComplete(textid,dataid,url){ $("#" + texti ...
- 使用TaskManager爬取2万条代理IP实现自动投票功能
话说某天心血来潮想到一个问题,朋友圈里面经常有人发投票链接,让帮忙给XX投票,以前呢会很自觉打开链接帮忙投一票.可是这种事做多了就会考虑能不能使用工具来进行投票呢,身为一名程序猿决定研究解决这个问题. ...
- Ajax实现搜索栏中输入时的自动提示功能
使用 jQuery(Ajax)/PHP/MySQL实现自动完成功能 JavaScript代码: <script src="jquery-1.2.1.pack.js" type ...
- salesforce零基础学习(八十)使用autoComplete 输入内容自动联想结果以及去重实现
项目中,我们有时候会需要实现自动联想功能,比如我们想输入用户或者联系人名称,去联想出系统中有的相关的用户和联系人,当点击以后获取相关的邮箱或者其他信息等等.这种情况下可以使用jquery ui中的au ...
随机推荐
- office2016破解激活安装
昨天一室友装office2016不会激活,[嘲讽脸]真的是笨啊.我这是在一个社区论坛里面找到的. 在网上找了教程,有些没用的,所以记录安装教程以便之后查看.以下的安装激活亲测有效(2017-4-28) ...
- STL容器 -- Set
核心: set 是一个数学含义上的集合-----保证了每个数的确定性, 互异性, 不仅如此, set 中的元素还是有序的. 头文件: #include <set> 拓展:由于 set 内的 ...
- mysql正则查询 模糊查询
-- ==============正则查询================ /* SQL默认是忽略大小写的 正则模式使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们 ...
- java getenv getProperties区别
网上很多使用的是getProperties.说获得系统变量,但是其实不正确.getProperties中所谓的"system properties"其实是指"java s ...
- 抓包分析LVS-NAT中出现的SYN_RECV
CIP:192.168.10.193 VIP:192.168.10.152:8000 DIP:100.10.8.152:8000 RIP:100.10.8.101:8000 和 100.10.8.10 ...
- Web应用安全审计工具WATOBO
Web应用安全审计工具WATOBO WATOBO是一款Web应用程序安全测试工具.该工具使用代理方式,对Web会话数据进行审计.它是一款半自动化工具,可以自动对请求和响应进行分析,找出潜在漏洞信息 ...
- luoguP3255 [JLOI2013]地形生成 动态规划
出题人语文真好... 各不相同的标号和高度 = 各不相同的标号 + 单独的高度... 第一问比较简单,考虑从大到小插入,在相同情况下,按关键值从小到大插入 这样子,关键大的元素一定会影响到关键小的元素 ...
- [BZOJ4423][AMPPZ2013]Bytehattan(对偶图+并查集)
建出对偶图,删除一条边时将两边的格子连边.一条边两端连通当且仅当两边的格子不连通,直接并查集处理即可. #include<cstdio> #include<algorithm> ...
- hdu 1533 KM或费用流
以前用KM写过,现在再用费用流写. #include <iostream> #include <cstdio> #include <cstring> #includ ...
- JAVA对数字证书的常用操作(转载)
一:需要包含的包 import java.security. * ; import java.io. * ; import java.util. * ; import java.security. * ...