Как я могу ограничить ввод только точками, числами и точками с запятой в jQuery?

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

Как я могу добиться этого в 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...'
 });

});


person Johnathan Au    schedule 02.10.2013    source источник
comment
возможный дубликат regex java, соответствующий IP-адресу и порту количество захваченных групп   -  person melancia    schedule 02.10.2013
comment
и точки с запятой... например: 10.200.66.106:8888 - Значит, вы имеете в виду двоеточие, а не точку с запятой?   -  person nnnnnn    schedule 02.10.2013


Ответы (2)


Для этого можно использовать алфавитно-цифровой плагин jquery. Добавьте класс к вашему элементу.

$(".myclass").numeric({allow:"."});
person sudhAnsu63    schedule 02.10.2013
comment
Обратите внимание, что буквенно-цифровой плагин, на который вы ссылаетесь, на самом деле не работает. То есть это не мешает пользователю вводить недопустимые символы с помощью вставки из буфера обмена или перетаскивания. - person nnnnnn; 02.10.2013
comment
я использую плагин прямо сейчас, и он просто запрещает пользователю копировать и вставлять - person Johnathan Au; 02.10.2013
comment
@JohnathanAu - он не ограничивает вставку, он просто отключает контекстное меню, поэтому вы все равно можете вставлять через меню «Правка» или с клавиатуры. - person nnnnnn; 03.10.2013

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

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

Рабочая скрипта

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

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

person Alex    schedule 02.10.2013