使用jquery在文本框中仅输入数字和“ - ”

时间:2014-07-31 02:34:11

标签: javascript jquery html css

我有一个JQuery语法,允许用户只在文本字段中输入数字。 Live code

然后我需要编写一个额外的代码,以允许用户在文本框中输入“ - ”(连字符),但它不起作用。 Live code

请帮忙。

HTML

Number : <input type="text" name="quantity" id="quantity" />&nbsp;<span id="errmsg"></span>

CSS

#errmsg{color: red;}

JS

$(document).ready(function () {
  //called when key is pressed in textbox
  $("#quantity").keypress(function (e) {
     //if the letter is not digit then display error and don't type anything
     if (e.which != 8 && e.which != 0 && e.which !=='-' && (e.which < 48 || e.which > 57)) {
        //display error message
        $("#errmsg").html("Digits Only").show().fadeOut("slow");
               return false;
    }
   });
});

2 个答案:

答案 0 :(得分:2)

您可以通过将String.fromCharCode(e.which) != '-'-的charCode)添加到您的条件中来允许连字符:

if (e.which != 8 && e.which != 0 && String.fromCharCode(e.which) != '-' && (e.which < 48 || e.which > 57)) {
    ...
}

演示(更新):http://jsfiddle.net/HkEuf/2669/

答案 1 :(得分:0)

使用regExps真的非常容易! 使用regExp /[0-9\-]/g检查文本是否仅包含您想要的字符,以及它是否显示错误信息。

$(document).ready(function () {
    $("#quantity").keypress(function (e) {
        var text = this.value;
        if (text.match(/[0-9\-]/g).join('') != text) {
            $("#errmsg").html("Digits Only").show().fadeOut("slow");
               return false;
        }
    });
});