Javascript 我需要一个JQuery IP掩码插件

Javascript 我需要一个JQuery IP掩码插件,javascript,jquery,jquery-plugins,ip-address,Javascript,Jquery,Jquery Plugins,Ip Address,JQuery有好的IP掩码插件吗?我已经试过了,但它没有小于12位的IP地址。然后我试过了,这在少于12位数的情况下也不起作用。有什么建议吗?来自屏蔽输入插件的工作示例- 少于12个字符: jQuery(function($){ $("#date").mask("99/99/9999"); $("#phone").mask("(999) 999-9999"); $("#tin").mask("99-9999999"); $("#ssn").mask("999-99-99

JQuery有好的IP掩码插件吗?我已经试过了,但它没有小于12位的IP地址。然后我试过了,这在少于12位数的情况下也不起作用。有什么建议吗?

来自屏蔽输入插件的工作示例-

少于12个字符:

jQuery(function($){
   $("#date").mask("99/99/9999");
   $("#phone").mask("(999) 999-9999");
   $("#tin").mask("99-9999999");
   $("#ssn").mask("999-99-9999");
});
他们有运行良好的工作示例吗

确切地说,这是你的问题,你能发布更多深入的信息吗

jQuery(function($){
    $("#MyElementID").mask("10.0.0.0"); //Does this not work?
});
您是否试图在每个字段中计数1-3位数字

如能

$("#MyElementID").mask("1.0.0.0"); //this
$("#MyElementID").mask("10.10.10.10"); //or this
$("#MyElementID").mask("100.100.100.100"); //or this
如果你能更具描述性,你可以得到帮助

如果你在这之后,你可以尝试一些更简单的方法,在输入框中添加水印,而不是强制使用掩码,这样你就可以改变可以输入的数字。
请参见Jquery水印-

您可以在本文中找到答案:

还有一个演示供您尝试


你可以尝试使用这个插件

我发现了这个,你不需要安装插件

function fnValidateIPAddress(ipaddr) {
    //Remember, this function will validate only Class C IP.
    //change to other IP Classes as you need
    ipaddr = ipaddr.replace( /\s/g, "") //remove spaces for checking
    var re = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; //regex. check for digits and in
                                          //all 4 quadrants of the IP
    if (re.test(ipaddr)) {
        //split into units with dots "."
        var parts = ipaddr.split(".");
        //if the first unit/quadrant of the IP is zero
        if (parseInt(parseFloat(parts[0])) == 0) {
            return false;
        }
        //if the fourth unit/quadrant of the IP is zero
        if (parseInt(parseFloat(parts[3])) == 0) {
            return false;
        }
        //if any part is greater than 255
        for (var i=0; i<parts.length; i++) {
            if (parseInt(parseFloat(parts[i])) > 255){
                return false;
            }
        }
        return true;
    } else {
        return false;
    }
}
功能fnValidateIPAddress(ipaddr){
//请记住,此函数将只验证C类IP。
//根据需要更改为其他IP类
ipaddr=ipaddr.replace(/\s/g,“”//删除用于检查的空格
var re=//^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$//;///regex。检查数字和
//IP的所有4个象限
if(重新测试(ipaddr)){
//用“点”分割成单位
var parts=IPAddress.split(“.”);
//如果IP的第一个单位/象限为零
if(parseInt(parseFloat(parts[0]))==0){
返回false;
}
//如果IP的第四个单位/象限为零
if(parseInt(parseFloat(parts[3]))==0){
返回false;
}
//如果任何部分大于255
对于(变量i=0;i 255){
返回false;
}
}
返回true;
}否则{
返回false;
}
}

这是一篇较老的文章。但是,对于那些想用一种简单的方法来操作多个输入的人来说,不需要使用庞大的插件,也不需要担心文档或方法,这里有一个简单的类选择器方法,可以帮你完成这一切。它只支持IPv4,但听起来您的需求非常简单

//jQuery 1.9+ selector pattern,
//To get working with an older version
//Swap first line to $(".ip").bind('keydown',function(e){
//To get working with jQuery versions support .live
//$(".ip").live('keydown',function(e){
$(document).on('keydown',".ip",function(e){
    var code = e.keyCode || e.which;
    var sections = $(this).val().split('.');
    //Only check last section!
    var isInt       = ((code >= 48 && code <= 57) || (code >= 96 && code <= 105));
    var hasSlash    = $(this).val().indexOf("/") == -1;
    if(isInt){
        if(hasSlash){
            if(sections.length < 4){
                //We can add another octet
                var val = parseInt(sections[sections.length-1]+String.fromCharCode(code));
                if(val > 255 || parseInt(sections[sections.length-1]) == 0){
                    $(this).val($(this).val()+"."+String.fromCharCode(code));
                    return false;
                }
                return true;
            } else {
                //Lets prevent string manipulations, our string is long enough
                var val = parseInt(sections[sections.length-1]+String.fromCharCode(code));
                if(val > 255 || parseInt(sections[sections.length-1]) == 0){
                    return false;
                }
                return true;
            }
        } else {
            var cidr_split = $(this).val().split('/');
            var target_val = parseInt(cidr_split[1]+String.fromCharCode(code));
            return (target_val < 33 && target_val.toString().length < 3 && parseInt(cidr_split[1]) != 0);
        }
    } else if(code == 191){
        //CIDR Slash
        return ($(this).val().indexOf("/") == -1);
    } else if(code == 8 || code == 46 || code == 9 || code == 13){
        return true;
    }
    return false
});
//jQuery 1.9+选择器模式,
//使用旧版本
//将第一行交换为$(“.ip”).bind('keydown',函数(e){
//使用jQuery版本支持。live
//$(“.ip”).live('keydown',函数(e){
$(文档).on('keydown',.ip',函数(e){
var代码=e.keyCode | | e.which;
var sections=$(this.val().split('.');
//只检查最后一部分!
变量isInt=((代码>=48&&code=96&&code 255 | | parseInt(节[sections.length-1])==0){
$(this.val($(this.val()+“+String.fromCharCode(code));
返回false;
}
返回true;
}否则{
//让我们防止字符串操作,我们的字符串足够长了
var val=parseInt(sections[sections.length-1]+String.fromCharCode(code));
如果(val>255 | | parseInt(节[sections.length-1])==0){
返回false;
}
返回true;
}
}否则{
var cidr_split=$(this.val().split('/');
var target_val=parseInt(cidr_split[1]+String.fromCharCode(code));
返回(target_val<33&&target_val.toString().length<3&&parseInt(cidr_split[1])!=0);
}
}否则如果(代码==191){
//苹果酒斜线
返回($(this.val().indexOf(“/”)==-1);
}else if(code==8 | | code==46 | | code==9 | | code==13){
返回true;
}
返回错误
});
为了更好地理解这一点,您在输入中绑定了类“ip”,它将自动处理其余部分:D此版本支持CIDR表示法(例如:192.168.1.1/16)。它只允许输入有效地址,要删除CIDR函数,您可以使用以下代码段(未测试)

//jQuery 1.9+选择器模式,
//使用旧版本
//将第一行交换为$(“.ip”).bind('keydown',函数(e){
//使用jQuery版本支持。live
//$(“.ip”).live('keydown',函数(e){
$(文档).on('keydown',.ip',函数(e){
var代码=e.keyCode | | e.which;
var sections=$(this.val().split('.');
//只检查最后一部分!
变量isInt=((代码>=48&&code=96&&code 255 | | parseInt(节[sections.length-1])==0){
$(this.val($(this.val()+“+String.fromCharCode(code));
返回false;
}
返回true;
}否则{
//让我们防止字符串操作,我们的字符串足够长了
var val=parseInt(sections[sections.length-1]+String.fromCharCode(code));
如果(val>255 | | parseInt(节[sections.length-1])==0){
返回false;
}
返回true;
}
}else if(code==8 | | code==46 | | code==9 | | code==13){
返回true;
}
返回错误
});
我在这里提供代码有两个目的1)这是我认为需要解决的问题,2)我希望为世界做出贡献

该代码段不是为分离而设计的,也不支持IPv6,如果您需要IPv6支持,请参阅anyulled建议的内容


但除了复杂的语法外,它将八位字节分开,只检查“活动”八位字节,它支持任何有效地址(0.0.0.0、0.0.0.0/0等)因此,明智地使用它除了防止无效输入外,不会进行任何花哨的检查。如果您正在寻找一个检查程序,请参阅Santiago Elvila Ramirez关于IP地址验证程序的帖子。

什么意思是“不能使用少于12位数字”??你能给我看一些例子吗???IPv6更重要,我想是这个问题导致它不能与IPv4一起工作吗?也请发布一些例子
//jQuery 1.9+ selector pattern,
//To get working with an older version
//Swap first line to $(".ip").bind('keydown',function(e){
//To get working with jQuery versions support .live
//$(".ip").live('keydown',function(e){
$(document).on('keydown',".ip",function(e){
    var code = e.keyCode || e.which;
    var sections = $(this).val().split('.');
    //Only check last section!
    var isInt       = ((code >= 48 && code <= 57) || (code >= 96 && code <= 105));
    if(isInt){
        if(sections.length < 4){
            //We can add another octet
            var val = parseInt(sections[sections.length-1]+String.fromCharCode(code));
            if(val > 255 || parseInt(sections[sections.length-1]) == 0){
                $(this).val($(this).val()+"."+String.fromCharCode(code));
                return false;
            }
            return true;
        } else {
            //Lets prevent string manipulations, our string is long enough
            var val = parseInt(sections[sections.length-1]+String.fromCharCode(code));
            if(val > 255 || parseInt(sections[sections.length-1]) == 0){
                return false;
            }
            return true;
        }
    } else if(code == 8 || code == 46 || code == 9 || code == 13){
        return true;
    }
    return false
});