2010-07-06 13 views
13

Czy istnieje dobra wtyczka IP Mask dla JQuery? Próbowałem już Masked Input Plugin, ale nie ma adresów IP z mniej niż 12 cyframi. Potem próbowałem meioMask i to nie działa również z mniej niż 12 cyframi. Jakieś sugestie?Potrzebuję wtyczkę JQuery IP Mask

+0

co to znaczy "nie działa z mniej niż 12 cyframi"? czy mógłbyś pokazać mi kilka przykładów? – Kai

+0

10.10.10.10 <12 cyfr – HyderA

+0

IPv6 to więcej, jak sądzę, ten problem, więc nie działa z IPv4? Proszę również zamieścić kilka przykładów/kodu, aby pomóc w tym, co robisz, nie można uzyskać rozsądnej odpowiedzi bez uzasadnionego pytania. Więc wszystko, co mogę powiedzieć, to 42. – Sphvn

Odpowiedz

10

można znaleźć odpowiedź w tym wątku:

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

i demo, aby spróbować

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

+0

Brak dokumentacji. To trud, aby spróbować pracować. Pobieranie wartości dla instancji. – HyderA

+0

Dead link ... no 404 but blank page. – user9645

+0

Spróbuj tego w międzyczasie: http://web.archive.org/web/20140219174935/http://mlntn.com/2009/12/30/jquery-ip-address-plugin/ – Philippe

1

Przykłady roboczych od Zamaskowany Plugin input -
http://digitalbush.com/projects/masked-input-plugin/

mniej niż 12 znaków:

przykłady
jQuery(function($){ 
    $("#date").mask("99/99/9999"); 
    $("#phone").mask("(999) 999-9999"); 
    $("#tin").mask("99-9999999"); 
    $("#ssn").mask("999-99-9999"); 
}); 

Mają roboczych, które są doskonale uruchomiony?

Co to jest Twój problem i czy możesz zamieścić więcej informacji?

jQuery(function($){ 
    $("#MyElementID").mask("10.0.0.0"); //Does this not work? 
}); 

Czy próbujesz policzyć 1-3 cyfry w każdym polu?

np. Aby móc.

$("#MyElementID").mask("1.0.0.0"); //this 
$("#MyElementID").mask("10.10.10.10"); //or this 
$("#MyElementID").mask("100.100.100.100"); //or this 

Jeśli być bardziej opisowe mogą Ci pomóc ..

Jeśli po tym czasie można spróbować czegoś prostszego przez znak wodny pola wejściowego zamiast egzekwowania maskę, więc można zmieniać numery, które można wprowadzić. See jQuery Watermark - http://code.google.com/p/jquery-watermark/

+1

Tak, potrzebuję 1-3 cyfr w każdym polu, bez określonej liczby cyfr. I nie jestem pewien, w jaki sposób wtyczka znaku wodnego mogłaby pomóc. – HyderA

+0

Ktoś proszę wyjaśnić powód do zaniedbania tego? – Sphvn

+0

Nie spadłem, ale muszę wiedzieć, jak pozwolić na maskowanie 1-3 cyfr. – HyderA

1

i fou nd to i ty nie potrzebujesz instalować wtyczek

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

Jest to starsza poczta jednak dla kogoś, kto chce w prosty sposób manipulować wiele wejść, bez użycia wtyczki wypełniający lub martwienia się o dokumentacji lub metod , oto prosta metoda selektora klasy, która robi to wszystko za Ciebie. Jego IPv4 tylko, ale brzmi jak twoje potrzeby są całkiem proste.

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

Aby to przełamać do zrozumienia, powiązać klasę „IP” w swoim wejściu, zostanie ona automatycznie obsłużyć resztę: D Ta wersja obsługuje notacji CIDR (np 192.168.1.1/16) pozwala jedynie ważne adresy być wprowadzane, aby usunąć CIDR funkcji można użyć użyć następującego fragmentu (nie testowane)

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

przytaczam tutaj kod do dwóch celów 1) jest to coś wierzę, należy się zająć, 2) Mam nadzieję przyczynić się do świata

Fragment nie jest de podpisany, aby zostać rozebranym, ani nie wspierać IPv6, jeśli potrzebujesz pomocy technicznej dla IPv6, zobacz, co zaproponował anyte.

Ale oprócz złożonej składni, rozbija ona oktety i sprawdza jedynie "aktywny" oktet, obsługuje dowolny adres VALID (0.0.0.0, 0.0.0.0/0, ect), więc używaj mądrze, że nie wykonaj dowolne sprawdzanie, inne niż zapobieganie błędnym wprowadzeniom. Jeśli szukasz sprawdzającego, zobacz post Santiago Elvira Ramirez o walidatorze adresów IP.

Powiązane problemy