2013-10-02 1 views
0

Я хочу ограничить, какие символы пользователь может ввести во входное текстовое поле, чтобы они могли вводить только числа, периоды и двоеточия. Поэтому, если они печатают что-либо еще, оно не будет отображаться или регистрироваться. Это относится к IP-адресам, например: 10.200.66.106:8888Как я могу ограничить ввод только периодами, числами и точками с запятой в jQuery?

Как я могу достичь этого в jQuery?

Я написал маленький пример в jsFiddle: http://jsfiddle.net/6xMxs/

HTML:

<div id="outer"> 
    <div id="inner"> 
      <p>IP Address:</p> 
     <p class="edit">2323</p> 
    </div> 
<div> 

JQuery:

$(document).ready(function() { 
$('.edit').editable('ipaddress/update',{ 
    type  : 'textarea', 
    cancel : 'Cancel', 
    submit : 'OK',   
    tooltip : 'Click to edit...' 
}); 

});

+0

Возможный дубликат [java regex, соответствующий ip-адресу и номеру порта в виде захваченных групп] (http://stackoverflow.com/questions/2908740/java-regex-matching-ip-address-and-port-number-as- захваченные группы) – melancia

+0

_ "и точки с запятой ... например: 10.200.66.106:8888"_ - Значит, вы имеете в виду двоеточия, а не точки с запятой? – nnnnnn

ответ

0

Чтобы сделать это, вы можете использовать jQuery alphanumeric plugin. Добавьте класс в свой элемент.

$(".myclass").numeric({allow:"."}); 
+1

Обратите внимание, что буквенно-цифровой плагин, на который вы ссылаетесь, на самом деле не работает. То есть, это не мешает пользователю вводить недопустимые символы через палитру буфера обмена или drag'n'drop. – nnnnnn

+0

Я использую плагин прямо сейчас, и он просто ограничивает пользователя от копирования и вставки –

+0

@JohnathanAu - он не ограничивает вставку, он просто отключает контекстное меню, поэтому вы можете вставлять его через меню «Правка» или клавиатуру. – nnnnnn

0

Вы можете удалить не-допустимые символы:

<input id="ip" type="text" /> 



$(document).ready(function() { 

    $('#ip').keyup(function() { 
     var el = $(this), 
      val = el.val(); 

     el.val(val.replace(/[^\d\.]/gi, "")); 
    }).blur(function() { 
     $(this).keyup(); 
    }); 
}); 

Working fiddle

Но есть лучшие способы, вы можете, например, полностью "блок" вхождение нежелательных символов. И помните, что вы можете легко избежать этих ограничений, когда проверка на стороне сервера не выполняется.

Кроме того, вы можете проверить номер html5 attribute pattern, который, как предполагает контекст, работает только для браузеров html5.