我有一个文本框。它应该只允许十进制数字,点后只允许两位数字(例如 34545.43)。我们如何使用 jquery 来做到这一点我在 google 和 stackoverflow 中搜索过,但没有满意的答案,因为某些脚本在 chrome 和 firefox 中不起作用。我尝试过,但无法正常工作。所以需要帮助如何做到这一点。 http://jsfiddle.net/S9G8C/1685/
Js:
$('.allow_decimal').keyup(function (evt) {
var self = $(this);
self.val(self.val().replace(/[^0-9\.]/g, ''));
if ((evt.which != 46 || self.val().indexOf('.') != -1) && (evt.which < 48 || evt.which > 57)) {
evt.preventDefault();
}
});
最佳答案
这个 jQuery 函数将在文本框的模糊事件上对值进行四舍五入
$.fn.getNum = function() {
var val = $.trim($(this).val());
if(val.indexOf(',') > -1) {
val = val.replace(',', '.');
}
var num = parseFloat(val);
var num = num.toFixed(2);
if(isNaN(num)) {
num = '';
}
return num;
}
$(function() { //This function will work on onblur event
$('#txt').blur(function() {
$(this).val($(this).getNum());
});
});
Number: <input type="text" id="txt" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
当用户输入时,您可以直接删除第三位数字。
var txt = document.getElementById('txtId');
txt.addEventListener('keyup', myFunc);
function myFunc(e) {
var val = this.value;
var re = /^([0-9]+[\.]?[0-9]?[0-9]?|[0-9]+)$/g;
var re1 = /^([0-9]+[\.]?[0-9]?[0-9]?|[0-9]+)/g;
if (re.test(val)) {
//do something here
} else {
val = re1.exec(val);
if (val) {
this.value = val[0];
} else {
this.value = "";
}
}
}
<input id="txtId" type="text"></input>
关于javascript - 使用 jquery 文本框仅允许带点的十进制数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49024726/