2010-07-06 2 views
13

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

+0

что означает «не работает с менее чем 12 цифрами»? не могли бы вы показать мне несколько примеров ??? – Kai

+0

10.10.10.10 <12 цифр – HyderA

+0

IPv6 больше, я думаю, это проблема, поэтому она не работает с IPv4? Также, пожалуйста, напишите несколько примеров/кода, чтобы помочь вам в том, что вы делаете, вы не можете получить разумный ответ без разумного вопроса. Таким образом, все, что я могу сказать, это 42. – Sphvn

ответ

10

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

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

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

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

+0

Нет документации. Это боль, чтобы попытаться работать. Получение значений, например. – HyderA

+0

Мертвая ссылка ... нет 404, но пустая страница. – user9645

+0

Попробуйте это за это время: http://web.archive.org/web/20140219174935/http://mlntn.com/2009/12/30/jquery-ip-address-plugin/ – Philippe

1

Рабочие примеры из Маски ввода Plugin -
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 разряда в каждом поле?

eg, чтобы иметь возможность.

$("#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/

+1

Да, мне нужно 1-3 цифры в каждом поле, без определенного количества цифр. И я не знаю, как поможет плагин с водяными знаками. – HyderA

+0

Кто-нибудь, пожалуйста, объясните причину этого? – Sphvn

+0

Я не спускал вниз, но мне нужно знать, как разрешить маскировку 1-3 цифр. – HyderA

1

i fou й это и вам не нужно устанавливать плагин

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; 
    } 
} 
3

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

Смежные вопросы