没有收到负数

时间:2015-06-29 08:31:05

标签: javascript jquery html

我有以下代码:http://jsfiddle.net/ntywf/1987/

{{1}}

我想要的是在插入时删除“ - ”符号。会发生什么是光标始终是最后一个小数家。我只想让这段代码不让用户输入负数。我怎样才能做到这一点? (问题是在输入中移动光标,因为它总是发送到最后一个字符)

4 个答案:

答案 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"/>

答案 1 :(得分:0)

使用type = "numeric"min="0"这样您就可以阻止文本字段接受字母表。 min = 0 将始终确保它永远不会接受-ve value。

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

JSFIDDLE DEMO会对您有所帮助。

答案 2 :(得分:0)

这是我尝试过的。

JS

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

它将删除 - 从数据中签名。

答案 3 :(得分: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/