Ответ 1
Вы можете найти свой ответ в этом сообщении:
http://mlntn.com/2009/12/30/jquery-ip-address-plugin/
и демо для вас, чтобы попробовать
Есть ли хороший IP-маска для JQuery? Я пробовал Masked Input Plugin, но не IP-адреса с менее чем 12 цифрами. Затем я пробовал meioMask, и это не работает с менее чем 12 цифрами. Любые предложения?
Вы можете найти свой ответ в этом сообщении:
http://mlntn.com/2009/12/30/jquery-ip-address-plugin/
и демо для вас, чтобы попробовать
Это более старое сообщение, однако для тех, кто хочет простой способ манипулировать несколькими входами, без использования плагина расширения или беспокоиться о документации или методах, вот простой метод выбора класса, который делает все это для вас. Его 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), она разрешает только действительные адреса input, чтобы удалить функцию 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-адреса.
Вы можете попробовать использовать этот плагин https://code.google.com/p/jquery-input-ip-address-control/
Рабочие примеры из Masked Input 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 цифры в каждом поле?
например, чтобы иметь возможность.
$("#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/
я нашел это, и вам не нужно устанавливать плагины
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;
}
}