JavaScript удалить дубликаты десятичных знаков при вводе числа

1

Необходимо, чтобы люди случайно набрали 2 десятичных знака в наборе полей ввода типа = число с шагом = любое. Я пробовал следующее безрезультатно.

$(function(){
    $('input[type=number]').keyup(function(){
        var newval=$(this).val().split('..').join('.');
        $(this).val(newval);
    });
});


$(function(){
    $('input[type=number]').keyup(function(){
        var newval=$(this).val().replace('..','.');
        $(this).val(newval);
    });
});

$(function(){
    $('input[type=number]').keyup(function(){
        var newval=$(this).val().replace(/\.\./g,'.');
        $(this).val(newval);
    });
});

все они просто вычеркивают значение или ничего не делают, и дубликаты десятичных знаков остаются.

https://jsfiddle.net/uLayjmkv/

  • 2
    Некоторые примеры ввода / вывода того, что вы ожидаете, будут полезны для понимания вашего вопроса.
  • 0
    Поэтому, если мои менеджеры по продажам вставят «1,35» вместо «1,35», необходимо удалить дубликат
Показать ещё 5 комментариев
Теги:
replace

2 ответа

2

Что-то вроде этого возможно? Использование типа 'text' not 'number'

let last = '';

document.getElementById('me').addEventListener('input', (e) => {
  const match = e.target.value.match(/[-+]?\d*\.?\d*/);
  if (match || e.target.value === '') {
    last = match ? match[0] : '';
  }

  e.target.value = last;
}, false);
<input id="me" type="text" />

Кажется, работает нормально для меня на chrome 58. Не знаю, есть ли какие-либо дополнительные случаи.

0

спасибо за вход всех, что я закончил делать на клавиатуре, измените attr "type" на "text", запустите replace(), а затем измените его на "число".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню