我是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
个点。
但是在某些情况下输入错误了。例如,我输入0500
或0000555
等..允许从0
开始,这就是为什么以前我限制0
不允许第一个字符但它以0
(0.01
或0.98
)不允许的十进制值生效。
我的要求是money
相关。所以我希望更改为0000555
到555
。
如何修改我的代码?
答案 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
});