Javascript 如何使用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

我不熟悉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="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 = "";
    }
  }
}