Javascript 如何使用jquery在文本框中只允许数字和2位小数
我不熟悉jquery。我有两个文本框的表单。因为我是一个特殊的角色。但我要允许十进制值 我实现了十进制代码,但不工作<代码>不允许。我想在小数点后只允许2位数字Javascript 如何使用jquery在文本框中只允许数字和2位小数,javascript,jquery,html,Javascript,Jquery,Html,我不熟悉jquery。我有两个文本框的表单。因为我是一个特殊的角色。但我要允许十进制值 我实现了十进制代码,但不工作不允许。我想在小数点后只允许2位数字 <form> <div class="col-md-6"> <div class="form-group "> <label for="minAmt" class="col-lg-4 control-label">Min.Amount</label> <div class="co
<form>
<div class="col-md-6">
<div class="form-group ">
<label for="minAmt" class="col-lg-4 control-label">Min.Amount</label>
<div class="col-lg-6">
<input type="text" class="form-control minAmt" id="minAmt" name="minAmt" placeholder="Enter Min Amount" />
</div>
</div>
<div class="form-group ">
<label for="maxAmt" class="col-lg-4 control-label">Max.Amount</label>
<div class="col-lg-6">
<input type="text" class="form-control maxAmt" id="maxAmt" name="maxAmt" placeholder="Enter Max Amount" />
</div>
</div>
</div>
</form>
最低金额
最高金额
脚本:
$('#minAmt').keyup(function(){
if($(this).val() == '0'){
$(this).val('');
}
if (this.value.match(/[^0-9]/g)) {
this.value = this.value.replace(/[^0-9]/g, '');
}
});
$('.minAmt').keyup(function (e) {
var character = String.fromCharCode(e.keyCode)
var newValue = this.value + character;
if (isNaN(newValue) || hasDecimalPlace(newValue, 3)) {
e.preventDefault();
return false;
}
});
function hasDecimalPlace(value, x) {
var pointIndex = value.indexOf('.');
return pointIndex >= 0 && pointIndex < value.length - x;
}
$('#minAmt').keyup(函数(){
if($(this).val()=='0'){
$(this.val(“”);
}
if(此.value.match(/[^0-9]/g)){
this.value=this.value.replace(/[^0-9]/g');
}
});
$('.minAmt').keyup(函数(e){
var character=String.fromCharCode(e.keyCode)
var newValue=this.value+字符;
if(isNaN(newValue)| hasDecimalPlace(newValue,3)){
e、 预防默认值();
返回false;
}
});
函数hasDecimalPlace(值x){
var pointIndex=value.indexOf('.');
返回pointIndex>=0&&pointIndex
我的代码有什么问题?替换:
this.value = this.value.replace(/[^0-9]/g, '');
与
这里有一些关于你的代码
您还可以创建如下jQuery函数:
(function($) {
$.fn.regEx = function(regType) {
var str = $.trim($(this).val());
if (regType == "tel") {
var regx = /^[0-9+./+/-]+$/;
}
if (regType == "adr") {
var regx = /^[A-Za-z0-9+.+,]+$/;
}
if (regType == "email") {
var regx = /^[A-Za-z0-9+@+.+_\-]+$/;
}
if (str != "") {
if (!regx.test(str)) {
$(this).siblings(".error").css("opacity", "1");
//alert("Alphanumeric only allowed !");
$(this).val("");
setTimeout(function() {
$(this).siblings(".error").css("opacity", "0");
}, 2000);
} else {
$(this).siblings(".error").css("opacity", "0");
}
} else {
//empty value -- do something here
}
};
})(jQuery);
并将其用于所需的元素,如:
$("input#email").keyup(function(e) {
$(this).regEx("email");
});
$("input#telefon").keyup(function(e) {
$(this).regEx("tel");
});
$("input#telefon").keyup(function(e) {
$(this).regEx("adr");
});
对于同级错误容器,您的HTML应该如下所示:
<div class="form_element_container">
<label for="email">Email <span class="required">*</span></label>
<input id="email" type="email" name="email" value="0" />
<div class="error">*Only specific characters allowed!</div>
</div>
电子邮件*
*只允许特定字符!
您可以尝试以下示例:
$('#minAmt').keyup(function(e) {
onlyNumeric(e);
var val= $(this).val();
if (val=== '') {
$(this).val('0.00');
}
else{
$(this).val(val.toFixed(2));
}
});
function onlyNumeric(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
var exclusions = [8, 46];
if (exclusions.indexOf(key) > -1) {
return;
}
key = String.fromCharCode(key);
var regex = /[0-9]|\./;
if (!regex.test(key)) {
theEvent.returnValue = false;
if (theEvent.preventDefault) theEvent.preventDefault();
}
}
或
$('#minAmt').keyup(function (e) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
var exclusions = [8, 46];
if (exclusions.indexOf(key) > -1) { return; }
key = String.fromCharCode(key);
var regex = /^\d+(\.\d{0,2})?$/g;
if (!regex.test(key)) {
theEvent.returnValue = false;
if (theEvent.preventDefault) theEvent.preventDefault();
}
var val = $(this).val();
if (!regex.test(val)) {
$(this).val('0.00');
}
else {
$(this).val(val.toFixed(2));
}
});
这是一个允许用户只输入数字和单周期(.)的解决方案
$('#text')。按键(函数(事件){
返回isNumber(事件,此)
});
//检查按下的键是数值还是十进制值的脚本。
函数isNumber(evt,元素){
var charCode=(evt.which)?evt.which:event.keyCode
如果(
(charCode!=46 | |$(element).val().indexOf('.')!=-1)和&/“.”复选点,并且只有一个。
(字符编码<48 | |字符编码>57))
返回false;
返回true;
}
或
var txt=document.getElementById('txtId');
txt.addEventListener('keyup',myFunc);
函数myFunc(e){
var val=该值;
变量re=/^([0-9]+[\.]?[0-9]?[0-9]?|[0-9]+)$/g;
变量re1=/^([0-9]+[\.]?[0-9]?[0-9]?|[0-9]+)/g;
if(重新测试(val)){
//在这里做点什么
}否则{
val=re1.exec(val);
if(val){
this.value=val[0];
}否则{
此值为“”;
}
}
}
我希望这能满足您的需要。我建议您听一下
输入事件,因为可以使用鼠标和/或上下文菜单进行修改,而不会生成键控事件
然后,您可以跟踪最后一个可接受的值,并在输入无效时恢复该值。您可以将以前的值作为数据属性进行管理:
$(函数(){
$('#minAmt,#maxAmt')。on('input',function(e){
if(/^(\d+(\.\d{0,2})?$/.test($(this.val())){
//输入正常。记住这个值
$(this.data('prevValue',$(this.val());
}否则{
//输入不正常。请还原以前的值
$(this.val($(this.data('prevValue')| |'');
}
}).trigger('input');//初始化'prevValue'数据属性
});代码>
最低金额
最高金额
我选中了,但没有工作,我在文本框中输入了56.78990..
代码工作,但我按下了退格按钮,删除了所有值,但第一个值没有删除。好的,我更正了正则表达式来处理这个问题。将type=“text”
更改为type=“number”
以保证只有e、+、-、和以外的数字。
$('#minAmt').keyup(function (e) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
var exclusions = [8, 46];
if (exclusions.indexOf(key) > -1) { return; }
key = String.fromCharCode(key);
var regex = /^\d+(\.\d{0,2})?$/g;
if (!regex.test(key)) {
theEvent.returnValue = false;
if (theEvent.preventDefault) theEvent.preventDefault();
}
var val = $(this).val();
if (!regex.test(val)) {
$(this).val('0.00');
}
else {
$(this).val(val.toFixed(2));
}
});
$('#text').keypress(function (event) {
return isNumber(event, this)
});
// THE SCRIPT THAT CHECKS IF THE KEY PRESSED IS A NUMERIC OR DECIMAL VALUE.
function isNumber(evt, element) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (
(charCode != 46 || $(element).val().indexOf('.') != -1) && // “.” CHECK DOT, AND ONLY ONE.
(charCode < 48 || charCode > 57))
return false;
return true;
}
<input id="txtId" type="text"></input>
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 = "";
}
}
}