我想在文本框中输入小数点。我想通过不允许小数点后的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之前和之后输入一位数。不允许字符只有整数
答案 0 :(得分:1)
答案 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版本:
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;
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;
}
};
希望这有帮助。