如何在文本框中取消减去( - )

时间:2017-05-03 13:14:52

标签: javascript validation

这里我有一个只允许数字和百分比的功能。但它允许减去( - ),我想在该脚本中限制减去。我怎么能限制。这是我的剧本。或者请建议我这样做。

function validateQty(el, evt) {
       var charCode = (evt.which) ? evt.which : event.keyCode
        if (charCode != 45 && charCode != 8 && charCode != 37  && (charCode != 46) && (charCode < 48 || charCode > 57))
            return false;
        if (charCode == 46) {
            if ((el.value) && (el.value.indexOf('.') >= 0))
                return false;
            else
                return true;
        }
        return true;
        var charCode = (evt.which) ? evt.which : event.keyCode;
        var number = evt.value.split('.');
        if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
            return false;
        }
    };

3 个答案:

答案 0 :(得分:1)

您可以使用input=number

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

使用javascript你可以做到:

// Select your input element.
var numInput = document.querySelector('input');

// Listen for input event on numInput.
numInput.addEventListener('input', function () {
    // Let's match only digits.
    var num = this.value.match(/^\d+$/);
    if (num === null) {
        // If we have no match, value will be empty.
        this.value = "";
    }
}, false)

如果输入字段中的数据将发送到服务器,请确保在服务器上也添加此验证。

答案 1 :(得分:1)

您可以将您想要的内容作为输入。做这样的事。

function restrictInput(el) {
  el.addEventListener('input', function(e) {
    if (!e.target.value.match(/^\d+$|%$/)) {
      e.target.value = e.target.value.slice(0, -1)
    }
    console.log(e.target.value);
  })
}

restrictInput(document.getElementById("input1"));
restrictInput(document.getElementById("input2"));
<input id="input1">
<input id="input2">

更新:正如OP所要求的那样。处理输入的通用函数。

注意:您可以在此功能中添加更多限制

答案 2 :(得分:1)

我认为你可以通过对正则表达式进行测试来简化你的脚本。

所以你的功能基本上会变成这样的东西

function validateQty(el, evt) 
{
   var regex = new RegExp(/^\d+$|%$/);

   return regex.test(el.value);
};

JSFiddle