Jquery 我的代码中不允许使用十进制值

Jquery 我的代码中不允许使用十进制值,jquery,html,Jquery,Html,我不熟悉jquery。我有两个文本框的表单。因为我是一个特殊的角色。但我要允许十进制值 我实现了十进制代码,但不工作 <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">

我不熟悉jquery。我有两个文本框的表单。因为我是一个特殊的角色。但我要允许十进制值

我实现了十进制代码,但不工作

<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(e){
if($(this).val() == ""){
$('.minAmt').val('');
}else if($(this).val() > 0){
console.log($(this).val());
$(this).val(Number($(this).val()))
}
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(函数(e){
if($(this).val()==“”){
$('.minAmt').val('');
}else if($(this).val()>0){
log($(this.val());
$(this.val)(数字($(this.val()))
}
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
我的代码有什么问题?

这里的问题是:

var character = String.fromCharCode(e.keyCode)
     var newValue = this.value + character;
     if (isNaN(newValue) || hasDecimalPlace(newValue, 3)) {
         e.preventDefault();
         return false;
     }
});
在这部法典中

var newValue = this.value + character;
它制造了一些始终是NaN的字符串 因此,它使isNaN(newValue)=始终为真。 if块返回的总是true,因此没有可见的“.”字符

你为什么这样做最好使用正则表达式。

例如,像这样:

是的,使用按键而不是键控键。

函数isNumberKey(evt)
{
var str=evt.target.value;
var res=str.match(/^-?\d*\.?\d*$/g);
如果(res==null){
var specialChar=str.replace(/[!@$%^&*()\=\[\]{};':“\\\\\\,\/?]/gi,”;
event.target.value=specialChar;
var charc=str.replace(/[^a-z]/gi,”);
如果(charc!=“”){
var end=str.indexOf(charc);
var replaceVal=str.substring(0,end);
event.target.value=replaceVal;
}
var negIndex=str.lastIndexOf(“-”);
如果(负指数>0){
var replaceVal1=str.substring(0,负索引);
event.target.value=replaceVal1;
}
var posIndex=str.lastIndexOf(“+”);
如果(posIndex>0){
var replaceVal2=str.substring(0,posIndex);
event.target.value=replaceVal2;
}
}
}

最低金额
最高金额

请检查此项,希望此项工作符合您的要求。您的字符代码检查不允许出现负数