在文本框的按键中限制为1位小数?

时间:2015-07-06 08:08:43

标签: javascript html asp.net

我想在文本框中输入小数点。我想通过不允许小数点后的1位数来限制用户。小数点后的限制只输入数字5.我在Keypress事件中编写了代码。使用按键事件我希望系列如:

1,1.5,2,2.5,3,3.5,4,4.5,5.

只有1到5之间的数字。我该怎么做?

检查克拉位置以允许在小数点前插入字符。 正确的问题由ddlab的评论指出,只允许一个点..            代码工作但我有一个问题,如果我输入10其工作,我无法这样做。我想要1到5之间的数字。

function checkDecimal(_this, EventKey) {
    //            var key = EventKey.which || EventKey.keyCode;
    //            if ((key <= 57 && key >= 48 && _this.value.length == 0) || key == 8 || key == 9 || key == 37 || key == 39) {
    //                return true;
    //            }
    //            else {
    //                return false;
    //}


    var charCode = (EventKey.which) ? EventKey.which : event.keyCode;
    var number = _this.value.split('.');


    if (charCode != 46 && charCode > 31 && (charCode < 49 || charCode > 53)) {
        return false;
    }

    //just one dot (thanks ddlab)
    if (number.length > 1 && charCode == 46) {
        return false;
    }
    //get the carat position
    var caratPos = getSelectionStart(_this);
    var dotPos = _this.value.indexOf(".");
    if (caratPos > dotPos && dotPos > -1 && (number[1].length > 0)) {

        return false;
    }
    return true;
}

function getSelectionStart(o) {
    if (o.createTextRange) {
        var r = document.selection.createRange().duplicate()
        r.moveEnd('character', o.value.length)
        if (r.text == '') return o.value.length
        return o.value.lastIndexOf(r.text)
    } else return o.selectionStart
}
        its not working properly,Can you tell me what could be the issue?

我想在dot之前和之后输入一位数。不允许字符只有整数

3 个答案:

答案 0 :(得分:1)

尝试使用正则表达式。你可以阅读它们here。 相应的正则表达式是: -

int (*cb)(char *c)

因此,假设我们的输入文本位于变量输入中。

/^[1-5](\.[1-5])?$/

答案 1 :(得分:0)

得到Kalpesh Krishna的回答:

 $(element).on('keypress', function() {
       var regexp = '/^[1-5](\.[1-5])?$/';
       var value = $(this).val();
       if(regexp.test(value)) {
            // it passed
       } else {
            // it not passed
       }
 });

答案 2 :(得分:0)

在这里,您可以在键入时使用1,1.5,2,2.5,3,3.5,4,4.5,5.

JQuery版本:

&#13;
&#13;
var oldValue = '';
$('input').on('input', function() {
  console.log($(this).val());
  if (!$(this).val()) {
    oldValue = '';
    return;
  }
  if (!/^[1-5](\.|(\.5))?$/.test($(this).val()) || $(this).val() > 5) {
    $(this).val(oldValue)
  } else {
    oldValue = $(this).val();
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" />
&#13;
&#13;
&#13;

Javascript版本:

var oldValue = '';
document.querySelector('input').oninput = function () {
    console.log(this.value);
    if (!this.value) {
        oldValue = '';
        return;
    }
    if (!/^[1-5](\.|(\.5))?$/.test(this.value)  || this.value > 5) {
        this.value = oldValue;
    } else {
        oldValue = this.value;
    }
};

希望这有帮助。