最近遇到一些这样的需求:实现一种IP地址的输入方式,就是输入3个字符或自动跳到下一个输入框内,删除的时候,一个输入框没有了字符,自动跳回上一个输入框。看到这里,相信大家都有一些想法了,没错,这种方法就是4个输入框!!!!通过获取字符的长度和焦点来实现,由此可以推广Mac地址也可以这样实现,就是6个输入框而已了。

效果图如下

代码如下

 <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JScript实现的IP地址输入框</title>
</head>
<body>
<style type=textcss>
.ip_input { width:20px; height:16px; font:normal 12px 宋体; color:#000000; border:0px; text-align:center; position:relative; top:1px; }
.all_input { width:112; height:20px; font:normal 8px 宋体; color:#000000; border:1px solid #000000; text-align:center; }
</style> <script language=javascript> function getPos(obj)
{
obj.focus();
var workRange=document.selection.createRange();
obj.select();
var allRange=document.selection.createRange();
workRange.setEndPoint("StartToStart",allRange);
var len=workRange.text.length;
workRange.collapse(false);
workRange.select();
return len;
} function setCursor(obj,num)
{
range=obj.createTextRange();
range.collapse(true);
range.moveStart('character',num);
range.select();
} function keyDownEvent(obj)
{
code=event.keyCode;
if(!((code>=48&&code<=57)||(code>=96&&code<=105)||code==190||code==110||code==13||code==9||code==39||code==8||code==46||code==99|| code==37))
event.returnValue=false;
if(code==13)
event.keyCode=9;
if(code==110||code==190)
if(obj.value)
event.keyCode=9;
else
event.returnValue=false;
} function keyUpEvent(obj0,obj1,obj2)
{
if (obj1.value > 255)
{
alert("填写范围必须在 0 - 255间");
obj1.value = obj1.value.substring(0, obj1.value.length - 1);
return;
}
code=event.keyCode if(obj1.value.length>=3&&code!=37&&code!=39&&code!=16&&code!=9&&code!=13)
obj2.focus(); if(code == 32)
obj2.focus(); if(code == 8 && obj1.value.length == 0)
{
obj0.focus();
setCursor(obj0,obj0.value.length);
} if (code == 37 && (getPos(obj1) == 0))
{
obj0.focus();
setCursor(obj0,obj0.value.length);
}
if (code == 39 && (getPos(obj1) == obj1.value.length))
{
obj2.focus();
}
}
function keyUpEventForIp4(obj0,obj)
{
if (obj.value > 255)
{
alert("填写范围必须在 0 - 255间");
obj.value = obj.value.substring(0, obj.value.length - 1);
return;
}
if(code == 8 && obj.value.length == 0)
{
obj0.focus();
setCursor(obj0,obj0.value.length);
}
if (code == 37 && (getPos(obj) == 0))
{
obj0.focus();
setCursor(obj0,obj0.value.length);
} }
function getipvalue(obj1,obj2,obj3,obj4,obj)
{
obj.value = obj1.value + "." + obj2.value + "." + obj3.value + "." + obj4.value;
alert(obj.value);
}
</script> <form>
<div class=all_input>
<input name=ip1 class=ip_input maxlength=3 onkeydown=keyDownEvent(this) onkeyup=keyUpEvent(ip1,ip1,ip2)>?<input
name=ip2 class=ip_input maxlength=3 onkeydown=keyDownEvent(this) onkeyup=keyUpEvent(ip1,ip2,ip3)>?<input
name=ip3 class=ip_input maxlength=3 onkeydown=keyDownEvent(this) onkeyup=keyUpEvent(ip2,ip3,ip4)>?<input
name=ip4 class=ip_input maxlength=3 onkeydown=keyDownEvent(this) onkeyup=keyUpEventForIp4(ip3,ip4)>
<input name = ipvalue TYPE="hidden"> </div>
<INPUT TYPE="button" value = "getvalue" onmouseup=getipvalue(ip1,ip2,ip3,ip4,ipvalue)>
</form>
</body>
</html>

  其实,主要是运用了focus,keyup,keydown的相关知识而已。

JavaScript实现IP地址的输入框方式的更多相关文章

  1. JavaScript按IP地址排序

    JavaScript按IP地址列表排序,主要思路就是分割每个点号部分,然后ip1和ip2分别对不够三位数的进行补0操作,然后转换为数字类型进行一一比较. 上代码: 正序: var arr=[ {ip: ...

  2. java struts2入门学习实例--将客户端IP地址和访问方式输出到浏览器

    实例1:实现客户端IP地址和访问方式输出到浏览器. IpAction.java package com.amos.web.action; import javax.servlet.http.HttpS ...

  3. javascript把IP地址转为数值几种方案,来挑战一下效率吧

    先看看什么是IP地址: IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节).IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~25 ...

  4. [Qt] IP地址输入框实现

    封装了一个ip地址的输入框.网络上下载了份代码,找不到哪里的了.经过修改之后,尽力让它的行为和windows的IP地址输入框的行为看起来像些.代码如下: //ipaddredit.h #ifndef ...

  5. js获取IP地址方法总结_转

    js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338.html 1,js取得IP地址 ...

  6. GitLab服务器IP地址设置

    最近使用GitLab 搭建了Git的私有仓库,但是发现私有仓库的地址居然是localhost,不是本机的IP地址,最后百度了一下,找了很久才找到,特此记录一下. 首先说明一下,我linux虚拟机的IP ...

  7. 浅谈TCP IP协议栈(二)IP地址

    上一节大致了解TCP/IP协议栈是个啥东西,依旧是雾里看花的状态,有很多时候学一门新知识时,开头总是很急躁,无从下手,刚学会一点儿,却发现连点皮毛都不算,成就感太低,所以任何时候学习最重要的是要在合适 ...

  8. js获取IP地址多种方法实例教程

    js获取IP地址方法总结   js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338. ...

  9. js获取IP地址方法总结

    js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338.html 1,js取得IP地址 ...

随机推荐

  1. android开发学习——day6

    关于UI的几个插件学习 button和textview,以及点击button利用Toast提醒,editText private EditText editText; @Override protec ...

  2. N元马尔科夫链的实现

    马尔可夫模型(Markov Model)是一种统计模型,广泛应用在语音识别,词性自动标注,音字转换,概率文法等各个自然语言处理等应用领域.经过长期发展,尤其是在语音识别中的成功应用,使它成为一种通用的 ...

  3. Thrift 基础(C++ rpc )

    一.thrift简介 thrift是Facebook开源的一套rpc框架,目前被许多公司使用 我理解的特点 使用IDL语言生成多语言的实现代码,程序员只需要实现自己的业务逻辑 支持序列化和反序列化操作 ...

  4. Java 9 中,我们可以在匿名类中使用 <> 操作符

    不说了,直接上代码: public class NewTest { public static void main(String[] args) { N<Integer> n1 = new ...

  5. 用new关键字对一个String 变量赋值和用literal值直接赋值有什么不同(转)

    String str1="ABC": 和String str2 = new String("ABC"); 有什么区别. String str1="AB ...

  6. 小程序实例:用js方法splict()、indexOf()、push()、replace()等操作数组Array的增删改查

    一.增加数组子级 1.Array.push() 定义和用法 向数组的末尾处添加一个或多个子集,并返回新数组的长度 语法 var array=["好","扎在那个" ...

  7. C#使用命令编译代码

    1.在路径%SystemRoot%\Microsoft.NET\Framework\vX.X.X(安装的.net版本号)下找到csc.exe,在cmd窗口cd到该路径下. ps(在该路径下有一个CSC ...

  8. C++切割文件

    void CFileCutter::DoSplit() { ; //计数 CString strSourceFile = m_strSource; //取得全局变量赋值给局部变量,方便操作 CStri ...

  9. JavaScript 日期多加一天 方法

    今天查看项目发现有出bug,由于未了符合sql语句的要求,前台网页显示的时候传到后台的时候要+1天, 网上查看了别人写的,发现多多少少有点漏洞,经过我自己总结,写出了达到了我要求的 var str = ...

  10. Java JDBC的基础知识(二)

    在我的上一篇Java JDBC的基础知识(一)中,最后演示的代码在关闭资源的时候,仅仅用了try/catch语句,这里是有很大的隐患的.在程序创建连接之后,如果不进行关闭,会消耗更多的资源.创建连接之 ...