как можно получить только цифры от входа - PullRequest
0 голосов
/ 01 декабря 2019

У меня на клавиатуре и маске для телефонных номеров, мне нужно получить только цифры, а не символы на маске, но она не работает, пожалуйста, дайте мне знать мою ошибку.

$(document).on('keyup', '#search', function(){
    sd=parseInt(document.getElementById('search').value);
    alert(sd);



'$(window).load(function()
{
   var phones = [{ "mask": "(###) ###-####"}, { "mask": "(###) ###-####"}];
    $('#search').inputmask({ 
        mask: phones, 
        greedy: true, 
        definitions: { '#': { validator: "[0-9]", cardinality: 1}} });
});'

Ответы [ 3 ]

0 голосов
/ 02 декабря 2019

Вы можете использовать метод unmask, предоставляемый библиотекой inputmask:

const phones = [{ "mask": "(###) ###-####"}, { "mask": "(###) ###-####"}];
const mask = { 
  mask: phones, 
  greedy: true, 
  definitions: { '#': { validator: "[0-9]", cardinality: 1}} 
}

$(document).on('keyup', '#search', function(){
  let value = document.getElementById('search').value;
  console.log( Inputmask.unmask( value, mask ) );
});

$('#search').inputmask( mask );

Codepen

0 голосов
/ 02 декабря 2019

С помощью jQuery вы можете предотвратить ввод, возвращая false в событии keydown.

//48-57 are number keys, 96-105 are numpad keys, the rest are control keys [backspace, tab, enter, left, up , right, down, delete]
$('input').on('keydown', e => (e.keyCode >= 48 && e.keyCode <=57) || (e.keyCode >= 96 && e.keyCode <=105) || [8,9,13,37,38,39,40,46].includes(e.keyCode));

https://jsfiddle.net/un18rw96/

0 голосов
/ 01 декабря 2019

Я мог бы порекомендовать сделать replace с регулярным выражением, чтобы удалить все нецифровые символы:

const sd = document.getElementById('search').value.replace(/\D/g,'');
console.log(sd);
<input id="search" value="(123) 456 - 7890" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...