Мне нужен плагин JQuery IP Mask - PullRequest
13 голосов
/ 06 июля 2010

Есть ли хороший плагин IP Mask для JQuery? Я пробовал Маскируемый плагин ввода , но он не имеет IP-адресов с менее чем 12 цифрами. Затем я попробовал meioMask , и это не работает с менее чем 12 цифрами. Есть предложения?

Ответы [ 5 ]

9 голосов
/ 19 июля 2010

Вы можете найти свой ответ в этом сообщении:

http://mlntn.com/2009/12/30/jquery-ip-address-plugin/

и демонстрацию для вас, чтобы попробовать

http://mlntn.com/demos/jquery-ipaddress/

3 голосов
/ 10 июня 2013

Это более старая статья, однако для тех, кто хочет иметь простой способ манипулирования несколькими входами, не используя громоздкий плагин или не заботясь о документации или методах, вот простой метод выбора класса, который сделает все за вас.Это только 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
});

Чтобы разобраться в этом для понимания, вы привяжете класс «ip» к входным данным, а остальное он обработает автоматически: D Эта версияподдерживает нотацию CIDR (например, 192.168.1.1/16), она позволяет только вводить действительные адреса, чтобы удалить функцию CIDR, которую вы можете использовать, используйте следующий фрагмент (не проверено)

//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
});

Я предоставляю кодздесь для двух целей 1) Это то, что я считаю нужным для решения, 2) я надеюсь внести свой вклад в мир

Фрагмент не предназначен для разделения и поддержки IPv6, если вам нужна поддержка IPv6см. https://code.google.com/p/jquery-input-ip-address-control/, который предложил anyulled.

Но кроме сложного синтаксиса, он разбивает октеты на части и проверяет только «активный» октет, он поддерживает любой VALID-адрес (0.0.0.0,0.0.0.0/0, т. Д.), Поэтому используйте это с умом, это не делает никакой необычной проверки, кроме предотвращения неправильного ввода.Если вы ищете чекер, пожалуйста, посмотрите сообщение Сантьяго Эльвиры Рамирес о валидаторе IP-адреса.

2 голосов
/ 10 августа 2012

Вы можете попробовать использовать этот плагин https://code.google.com/p/jquery-input-ip-address-control/

1 голос
/ 10 октября 2012

Я нашел это, и вам не нужно устанавливать плагины

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;
    }
}
1 голос
/ 19 июля 2010

Рабочие примеры из плагина маскируемого ввода -
http://digitalbush.com/projects/masked-input-plugin/

Менее 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-Watermark - http://code.google.com/p/jquery-watermark/

...