`
mimang2007110
  • 浏览: 237170 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

JQuery写的简单的IP控件

 
阅读更多

在工作中需要用一些IP控件,就自己照着写了一个简单的雏形,下面是源码,请有兴趣的各位帮忙完善指正

1、JQuery代码

(function($)
{
	$.fn.ipinput = function(options)
	{
		// 默认属性
		var defaults =
		{
			// 长度最低支持110像素
			width : 110,
			// 高度默认20像素
			height : 20,
			// 在键盘按下时用来存储未输入前的值
			currValue : '',
			// 原有值,就是从数据库中读取到的值
			value : ''
		}
		
		// 传递的参数
		var options = $.extend(defaults, options);
		
		// 输入框对象及父级对象
		var $this = $(this);
		var $parent = $this.parent();
		
		// 隐藏输入框(该输入框用于存储实际值)
		$this.attr({style : 'display:none'});
		
		// 输入控件代码
		var html = '';
		html += '<div class="ipinput_div">';
		html += '<input type="text" id="ipOne" class="ipinput_input"/>';
		html += '<span class="ipinput_separator">.</span>';
		html += '<input type="text" id="ipTwo" class="ipinput_input"/>';
		html += '<span class="ipinput_separator">.</span>';
		html += '<input type="text" id="ipThree" class="ipinput_input"/>';
		html += '<span class="ipinput_separator">.</span>';
		html += '<input type="text" id="ipFour" class="ipinput_input"/>';
		html += '</div>';
		
		// 添加输入控件代码
		$parent.append(html);
		
		// 把原有的值赋到输入框中
		if(!isEmpty(options.value))
		{
			var valArr = options.value.split(".");
			if(4 == valArr.length)
			{
				$('#ipOne').val(valArr[0]);
				$('#ipTwo').val(valArr[1]);
				$('#ipThree').val(valArr[2]);
				$('#ipFour').val(valArr[3]);
			}
		}
		
		// 设置宽度和高度
		$('.ipinput_div').width(options.width);
		$('.ipinput_div').height(options.height);
		alert($('input', $('.ipinput_div')));
		// 输入框绑定键盘按下事件
		$('.ipinput_input').keydown(function(event)
		{
			keydown(event);
		});
		
		// 输入框绑定键盘按下弹起事件
		$('.ipinput_input').keyup(function(event)
		{
			keyup(event);
		});
		
		// 输入框失去焦点事件
		$('.ipinput_input').blur(function()
		{
			setData($this);
		});
	};
	
	// 判断参数是否为空
	var isEmpty = function(obj)
	{
		if(null == obj)
		{
			return true;
		}
		else if(undefined == obj)
		{
			return true;
		}
		else if("" == obj)
		{
			return true;
		}
		else
		{
			return false;
		}
	};
	
	// 赋值给隐藏框
	var setData = function(inputObj)
	{
		// 四个框的值
		var one = $('#ipOne').val();
		var two = $('#ipTwo').val();
		var three = $('#ipThree').val();
		var four = $('#ipFour').val();
		
		// 如果四个框都有值则赋值给隐藏框
		if(!isEmpty(one) && !isEmpty(two) && !isEmpty(three) && !isEmpty(four))
		{
			var ip = one + "." + two + "." + three + "." + four;
			inputObj.val(ip);
		}
	}
	
	// 键盘按下事件
	var keydown = function(event)
	{
		// 当前输入的键盘值
		var code = event.keyCode;
		
		// 除了数字键、删除键、小数点之外全部不允许输入
		if((code < 48 && 8 != code && 37 != code && 39 != code) 
			|| (code > 57 && code < 96) 
			|| (code > 105 && 110 != code && 190 != code))
		{
			return false;
		}
		
		// 先存储输入前的值,用于键盘弹起时判断值是否正确
		options.currValue = $(this).val();
		
		// 110、190代表键盘上的两个点
		if(110 == code || 190 == code)
		{
			// 当前输入框的ID
			var id = $(this).attr("id");
			
			// 当前输入框的值
			var value = $(this).val();
			
			// 如果是第一个框则第二个框获的焦点
			if("ipOne" == id && !isEmpty(value))
			{
				$('#ipTwo').focus();
				return false;
			}
			// 如果是第二个框则第三个框获的焦点
			else if("ipTwo" == id && !isEmpty(value))
			{
				$('#ipThree').focus();
				return false;
			}
			// 如果是第三个框则第四个框获的焦点
			else if("ipThree" == id && !isEmpty(value))
			{
				$('#ipFour').focus();
				return false;
			}
			// 如果是第四个框则直接返回
			else if("ipFour" == id)
			{
				return false;
			}
			else if(isEmpty(value))
			{
				return false;
			}
		}
	}
	
	// 键盘弹起事件
	var keyup = function(event)
	{
		// 当前值
		var value = $(this).val();
		if(!isEmpty(value))
		{
			value = parseInt(value);
			
			if(value > 255)
			{
				$(this).val(options.currValue)
			}
			else if(value > 99)
			{
				// 当前输入框的ID
				var id = $(this).attr("id");
				
				// 如果是第一个框则第二个框获的焦点
				if("ipOne" == id && !isEmpty(value))
				{
					$('#ipTwo').focus();
				}
				// 如果是第二个框则第三个框获的焦点
				else if("ipTwo" == id && !isEmpty(value))
				{
					$('#ipThree').focus();
				}
				// 如果是第三个框则第四个框获的焦点
				else if("ipThree" == id && !isEmpty(value))
				{
					$('#ipFour').focus();
				}
			}
		}
	}
})(jQuery);

 2、CSS代码

.ipinput_input {
	border-color : #b99d7f;
	border-style : solid;
	border-width : 0px;
	background-color : #ffffff;
	margin-right : -5px;
	margin-left : 0px;
	margin-top : 0px;
	margin-bottom : 0px;
	width : 22%;
	height : 90%;
}

.ipinput_separator {
	margin-right : 2px;
	margin-left : 2px;
	font-weight : bolder;
	font-size : 14px;
}

.ipinput_div {
	border-color : #86A3C4;
	border-style : solid;
	border-width : 1px;
}

 3、HTML代码

<input name="aucIpAddr" type="text" style="width:200px"/>

 4、JS代码

$('input[name=aucIpAddr]').ipinput(
{
	width : 201,
	height : 20,
	value : "192.168.1.2"
});

 5、HTML页面引用

<link rel="stylesheet" type="text/css" href="../../css/ipinput.css"/>
<script type="text/javascript" src="../../script/jquery.min.js"></script>
<script type="text/javascript" src="../../script/ipinput.js"></script>

 注:附件是另外一种自定义控件的方式,有兴趣可以使用这个方式再写一遍

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    JQuery插件 IP地址输入框

    总之,"JQuery插件 IP地址输入框"提供了一个方便的解决方案,用于在网页上创建用户友好的IP地址输入控件,尽管在IE浏览器下可能存在一些挑战,但通过适当的优化和调整,可以克服这些限制,实现全平台的良好体验。

    输入IP地址和MAC地址的自定义控件

    在本例中,我们关注的是一个名为"IpBoxControl"的自定义控件,它专为输入IP地址和MAC地址设计。这个控件的创建者从网络上获取了源代码,并对其进行修改以适应实际使用场景。 IP地址(Internet Protocol Address)是...

    使用IP地址控件显示和设置IP地址

    在IT领域,尤其是在开发涉及网络配置或管理的软件时,"使用IP地址控件显示和设置IP地址"是一个常见的需求。IP地址控件是用户界面(UI)设计中的一种元素,它允许用户方便地输入、查看和修改IPv4或IPv6地址。下面将...

    jquery IP输入框

    在压缩包文件名称“jQueryIP输入框控件”中,我们可以推测包含的是该jQuery插件的所有源文件,可能包括JavaScript文件(如jquery.ipinput.js)、CSS样式文件(如jquery.ipinput.css)以及示例或者测试页面(如index....

    IPAddressTextBox好用的IP输入控件C#

    在IT行业中,开发人员经常需要处理用户输入的IP地址,为了提供良好的用户体验并确保数据的准确性,使用专门的IP输入控件是必要的。`IPAddressTextBox`控件在C#环境中就是一个这样的工具,它专为输入IPv4或IPv6地址而...

    Javascript jquery css 写的简单进度条控件

    本人使用的还是 jQuery 框架,因为这样简短的代码可能会更容易理解。 当然这个控件还有很多需要完成的地方,我仅仅是提供了一种遵循 Web 标准的实现思路。废话不多说. Javascript Progress Bar Demo – jb51...

    jquery+javascript编写国籍控件

    一直苦于没有好的国籍控件可以用,于是抽空写了一个国籍控件,现分享给大家。 主要功能和界面介绍 国籍控件主要支持中文、英文过滤以及键盘上下事件。 源码介绍 国籍控件核心是两个文件,navtionality.js 和 mian....

    超实用的jQuery代码段

    超实用的jQuery代码段精选近350个jQuery代码段,涵盖页面开发中绝大多数要点、技巧与方法,堪称史上最实用的jQuery代码参考书,可以视为网页设计与网站建设人员的好帮手。《超实用的jQuery代码段》的代码跨平台、跨...

    ASP.NET自定义文本框控件(日历、IP、电话、数字等功能集成)

    本文将深入探讨如何创建一个自定义文本框控件,该控件集成了日期选择、电话格式验证、IP地址输入以及焦点事件处理等多种功能。 首先,自定义文本框控件通常通过继承自ASP.NET的基础控件`System.Web.UI.WebControls....

    Jquery zTree 树控件异步加载操作

    Jquery zTree是一个基于JQuery实现的...最后,文章提到的《jQuery插件ztree使用汇总》专题中应该包含了更多关于ztree控件的使用方法、技巧和案例分析,这对于需要深入了解zTree应用的开发者来说是一个宝贵的学习资源。

    WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptRes

    请添加一个名为 jquery (区分大小写)的 ScriptResource”。这个问题通常出现在尝试使用ASP.NET内置的无侵入式验证(Unobtrusive Validation)时,由于系统找不到jQuery库的引用,因此导致验证功能无法正常工作。下面...

    c# asp.net 鼠标改变控件坐标位置,更改控件坐标,注册表保存读取,打印,查找局域网内打印机

    这通常通过JavaScript或jQuery实现,因为这些技术可以在客户端运行,更新DOM(文档对象模型)。例如,你可以创建一个JavaScript函数,接收鼠标事件,根据鼠标的当前位置调整控件的坐标属性,如`style.left`和`style....

    Javascript 写的简单进度条控件

    很多的时候用户需要等待你“臃肿”的 Javascript...本人使用的还是 jQuery 框架,因为这样简短的代码可能会更容易理解。 当然这个控件还有很多需要完成的地方,我仅仅是提供了一种遵循 Web 标准的实现思路。废话不

    获取本地IP、MAC、

    获取本地的IP、MAC地址、主机名。通过引用c:/windows/system32下的控件,获取本地IP

    省市区选择控件

    - JavaScript/jQuery:pcc.js 文件包含逻辑代码,处理用户交互,实现三级联动功能。可能使用事件监听(如`change`事件)和DOM操作(如`innerHTML`改变、`appendChild`添加选项等)。 3. **文件详解** - index....

    动态IP地址输入输入框\输入线

    首先,IP地址输入框是用户界面中一个专门用于输入IP地址的文本输入控件。IP地址,全称Internet Protocol Address,是互联网上的设备识别号,通常由四组0到255的数字组成,每组之间用点分隔,例如192.168.1.1。在网页...

    推荐发几个常用控件(新加DHTML控件)

    这是一个用于输入特定格式数据的控件,例如电话号码、邮政编码或IP地址。在示例代码中,它被用来创建一个IP地址输入框。用户可以看到一个预定义的掩码"IP: ###.###.###.###",确保输入的IP地址格式正确。这个控件...

    #C 局域网文件传输与聊 Sanler工具条界面美化控件

    例如,使用jQuery库(如压缩包中的jquery-1.11.0.min.js)可以增强网页交互性,magnific-popup.js可能是用于弹出窗口或图片预览的插件,flexisel.js和swipebox.min.js可能是响应式轮播图组件,这些都能让文件传输...

    PHP实例开发源码—PHP-MySQL-Ajax投票控件 Dracon Ajax Poll.zip

    以下是这个控件涉及的关键知识点: 1. **PHP**:PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,主要用于Web开发,可以嵌入到HTML中。在这个实例中,PHP用于处理用户请求,与MySQL数据库进行交互,...

Global site tag (gtag.js) - Google Analytics