如何允许" 0。"我的代码中的十进制

时间:2017-05-05 10:44:31

标签: javascript 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">
    <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>
<div class="col-md-12">
<div class="form-actions btnzone">
   <button type="button" class="btn btn-success savebtn" style="padding: 6px 12px;margin-left: 40%;" id="addbutton" ><i class="icon-check-sign" aria-hidden="false"></i>Add</button>
</div>
</div>
</form>

脚本代码:

$('#minAmt,#maxAmt').keyup(function(){
    // if($(this).val() == '0'){
      //$(this).val('');  
    //}
     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 = "";
        }
      }
   });

这里我允许第一个值0和十进制值仅允许two个点。

但是在某些情况下输入错误了。例如,我输入05000000555等..允许从0开始,这就是为什么以前我限制0不允许第一个字符但它以00.010.98)不允许的十进制值生效。

我的要求是money相关。所以我希望更改为0000555555

如何修改我的代码?

2 个答案:

答案 0 :(得分:0)

尝试使用步骤

输入type ='number'
<input type="number" step="0.01" class="form-control"  />

答案 1 :(得分:0)

刚刚使用

<input type="number" step="0.01" class="form-control minAmt" id="minAmt" name="minAmt" placeholder="Enter Min Amount" />

并自动验证

但是如果你需要使用regexp,你可以使用这种结构来验证浮点类型,如0.01或0,01:

var template = /^([-+]?[0-9]*[\.|,]?[0-9]*)$/g
val = template.test(val) ? parseFloat(val, 2) : 0; // after this row val any way will be some float positive or negative or 0, but we can operate it like number

第二行将任何字符串(如数字)转换为数字而不使用引导数0.例如:

var a = '003';
b = parseFloat(a, 2);
// result 3

所以你的代码将是这样的:

$('#minAmt,#maxAmt').keyup(function(){
    var template = /^([-+]?[0-9]*[\.|,]?[0-9]*)$/g
    this.value = template.test(this.value) ? parseFloat(this.value.replace(',', '.'), 2) : 0; //after your field will have the number without leads 0
   });