2015-06-29 3 views
1

У меня есть следующий код: http://jsfiddle.net/ntywf/1987/не получают отрицательные числа

$(document).ready(function() {  
    $('input').keyup(function() { 
     var $th = $(this); 
     $th.val($th.val().replace(/[-]/g, function(str) { 
      //alert('You typed " ' + str + ' ".\n\nPlease use only letters and numbers.'); 
      return ''; 
     })); 
    }); 
}); 

что я хочу, чтобы удалить знак «-» выключен, когда он вставлен. происходит то, что курсор всегда является последним десятичным домом. Я просто хочу, чтобы этот код не позволял пользователю вводить отрицательные числа. Как я могу это сделать? (Проблема заключается в перемещении курсора по входу, так как он всегда посылается к последнему символу)

+0

Ваш код, кажется, работает, в том, что он останавливает пользователя набрав в '-', есть определенный вопрос у вас есть с ним? Обратите внимание, что вы также хотите выполнить эту проверку на событиях «change» или «blur», поскольку я все еще могу скопировать символ с помощью мыши. –

+0

не мог понять проблему –

+0

проблема заключается в перемещении курсора внутри ввода –

ответ

1

Вы можете использовать KeyCode (Link), Чтобы проверить, какой ключ вы нажали, и использовать replace, чтобы удалить его:

$('input').keyup(function(e) { 
 
     
 
    var code = e.keyCode || e.which; 
 
    if(code == 109 || code == 189) { //Enter keycode 
 
     //Do something 
 
     var valor = $(this).val(); 
 
     $(this).val(valor.replace(/[-]/g, '')) 
 
    } 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input type="text"/>

0

Использование type = "numeric" и min="0" Таким образом, вы можете предотвратить ваш текст-поле от приема алфавитов, а также. min = 0 всегда будет уверен, что он никогда не примет значение -ve.

<input type="number" min="0"/> 

JSFIDDLE DEMO будет полезен вам.

+0

это не решает мою проблему, так как клиент вставляет отрицательные числа вручную. –

+0

Я пробовал это в ссылке на скрипку, и он работает. Это не позволяет отрицательный знак '-' вообще, даже если он не позволяет нечисловые значения. Какое точное поведение вы смотрите. Если вы готовите шаг за шагом ** USE CASE ** - это поможет много. –

0

Вот что я пробовал.

JS

$('input').keyup(function() { 
     var $th = $(this).val(); 
     $th = $th.replace(/[-]/g, ""); 
     $(this).val($th) 
     console.log($(this).val()); 
    }); 

Это будет удалить - знак из данных.

+0

он не решает мою проблему, если входной ход с курсором влево, он всегда передается в конец. спасибо –

+0

Его потому, что событие keyup идет в рекурсивном падении –

+0

Невозможно заблокировать ключ «-» при вставке? –

0

Это должно решить вашу проблему

То, что я сделал это:

  • Я использовал метод встроенный HTML поля ввода setSelectionRange(), который устанавливает начальную и конечную позиции текущего текста выбор в элементе. (от MDN)

MDN Артикул: https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange

JS код:

$(document).ready(function() {  
    $('input').keyup(function() { 
    var $th = $(this); 
    $th.val($th.val().replace(/[-]/g, function(str) { 
     //alert('You typed " ' + str + ' ".\n\nPlease use only letters and numbers.'); 
     return ''; 
    })); 
    $('input')[0].setSelectionRange(0, 0); //this method sets the range to zero text starting from 0 index to 0 index 
    }); 
}); 

JSFiddle: http://jsfiddle.net/dreamweiver/ntywf/1998/

+0

мой вопрос в том, что я хочу, чтобы мы продолжали двигаться в том месте, где оно есть. Невозможно заблокировать ключ «-» при вставке? @dreamweiver –

+0

hmmm, единственный способ, которым я могу блокировать '-', - это проверять событие' keypress', чем 'keyup' – dreamweiver

+0

вы можете сделать пример plz? –

Смежные вопросы