简体   繁体   English

如何只从输入中获取数字

[英]how can get only numbers from the input

I have on keyup and mask for phone numbers, I need to get only digits, not symbols on mask, but it is not working, please let me know my mistake.我有电话号码的键盘和掩码,我只需要得到数字,而不是掩码上的符号,但它不起作用,请告诉我我的错误。

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

I might recommend doing a replace with a regular expression to remove all non-digits:我可能建议用正则表达式replace以删除所有非数字:

 const sd = document.getElementById('search').value.replace(/\D/g,''); console.log(sd);
 <input id="search" value="(123) 456 - 7890" />

You can use the unmask method provided by the inputmask library:您可以使用 inputmask 库提供的unmask方法:

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代码笔

With jQuery you can prevent inputs by returning false on the keydown event.使用 jQuery,您可以通过在keydown事件上返回 false 来阻止输入。

//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/ https://jsfiddle.net/un18rw96/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM