Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как разрешить ввод только цифр и минуса в начале? (https://javascript.ru/forum/jquery/74952-kak-razreshit-vvod-tolko-cifr-i-minusa-v-nachale.html)

xecic 20.08.2018 14:04

Как разрешить ввод только цифр и минуса в начале?
 
Привет. Есть такой код -
$( document ).ready(function() {
  $("#AXInput").on("keypress keyup blur",function (event) {
             //this.value = this.value.replace(/[^0-9\.]/g,'');
      $(this).val($(this).val().replace(/[^0-9\.]/g,''));
             if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
                 event.preventDefault();
             }
         });
  });

Он разрешает вводить только цифры и точки, если нужна float переменная . А как сделать так, чтобы можно было ввести еще и знак минус(-), перед строкой? Например -1,56 или -5. То есть только в начале строки разрешить ввод знака.

ksa 20.08.2018 15:06

Цитата:

Сообщение от xecic
А как сделать так, чтобы можно было ввести еще и знак минус(-), перед строкой? Например -1,56 или -5

Как вариант...

var re=/^\-?\d*?(\.\d+)?/;
alert(re.test('123'));
alert(re.test('0.123'));
alert(re.test('.123'));
alert(re.test('1.23'));
alert(re.test('-1.56'));
alert(re.test('-5'));

j0hnik 20.08.2018 15:30

<input type="number">

xecic 20.08.2018 16:58

Цитата:

Сообщение от ksa (Сообщение 493080)
Как вариант...

var re=/^\-?\d*?(\.\d+)?/;
alert(re.test('123'));
alert(re.test('0.123'));
alert(re.test('.123'));
alert(re.test('1.23'));
alert(re.test('-1.56'));
alert(re.test('-5'));

Так?
$( document ).ready(function() {
  var AX;
  var re=/^\-?\d*?(\.\d+)?/;

  $("#AXInput").on("keypress keyup blur",function (event) {
     AX = re.test($(this));
  });
});

Или так
$( document ).ready(function() {
  $("#AXInput").on("keypress keyup blur",function (event) {
             //this.value = this.value.replace(/[^0-9\.]/g,'');
      $(this).val($(this).val().replace(/^\-?\d*?(\.\d+)?/,''));
             if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
                 event.preventDefault();
             }
         });
  });

Не получается, что то.

laimas 20.08.2018 18:13

$('#AXInput').on('input keyup', function() {
    this.value = this.value.replace(/\-{2,}/, '-').replace(/[^\d\.-]|\b-/, '')
})

xecic 20.08.2018 18:26

Цитата:

Сообщение от laimas (Сообщение 493096)
$('#AXInput').on('input keyup', function() {
    this.value = this.value.replace(/\-{2,}/, '-').replace(/[^\d-]|\b\-/, '')
})

Спасибо.

laimas 20.08.2018 18:27

replace(/[^\d\.-]|\b-/, '') - так будет верно, исправьте.

PS. Не вник, а разрешены десятичные, значит в исключения нужно добавить точку, но как и со знаком нужно еще бороться с двойным ее вводом.


Часовой пояс GMT +3, время: 14:55.