文本框仅接受十进制值,并且应在十进制后追加2个零
Textbox to Accept only decimal Value and should append 2 zero after decimal
我正在验证我的页面,其中有3个文本框。第一个用于选择日期的文本框,第二个用于插入十进制值,第三个用于再次插入十进制值。
实际上,我正在尝试的是,如果假设用户输入了一些值,比如123而不是123.00,那么文本框本身应该在用户插入的值的末尾附加.00,使其成为十进制。这是我的Javascript代码
$(document).ready(function () {
});
function ValidateAddNewCourseCharge() {
var EffectiveDate = $.trim($("[id$='txtFromDate']").val());
var AdminCharge = $.trim($("[id$='txtAdminCharges']").val().attr("#.00"));
var OtherCharge = $.trim($("[id$='txtOtherCharges']").val().attr("#.00"));
isValidDate(EffectiveDate);
if (EffectiveDate == "__-__-____") {
showErrorMessagePopUp("Please select Date!");
return false;
}
else {
if (isValidDate(EffectiveDate) == false) {
showErrorMessagePopUp("Please Select Valid Date for Course Amount!");
return false;
}
}
if (AdminCharge == "") {
showErrorMessagePopUp("Please Enter Admin Charge!");
return false;
}
else {
if (isValidPrice(AdminCharge) == false) {
showErrorMessagePopUp("Please Enter Valid Admin Amount!");
return false;
}
if (AdminCharge == checkPrice(AdminCharge))
{
showErrorMessagePopUp("Please Enter Valid Admin Amount!");
return false;
}
}
if (OtherCharge == "") {
showErrorMessagePopUp("Please Enter Other Charge!");
return false;
}
else {
if (isValidPrice(OtherCharge) == false) {
showErrorMessagePopUp("Please Enter Valid Other Amount!");
return false;
}
if (OtherCharge == checkPrice(OtherCharge)) {
showErrorMessagePopUp("Please Enter Valid Other Amount!");
return false;
}
}
return true;
}
function isValidDate(number) {
var regex = /^(0?[1-9]|[12][0-9]|3[01])['/'-](0?[1-9]|1[012])['/'-]'d{4}$/
return regex.test(number);
}
function isValidPrice(number) {
var regex = /^'d{0,12}('.'d{0,2})?$/
return regex.test(number);
}
function checkPrice(el) {
var ex = /^[0-9]+'.?[0-9]*$/;
el.value = parseFloat(el.value).toFixed(2);
if (ex.test(el.value) == false) {
el.value = '';
}
}
我点击按钮调用这个函数。
<asp:Button ID="btnAddCharge" runat="server" CssClass="btn btn-success" OnClick="btnAddCharge_Click" OnClientClick="return ValidateAddNewCourseCharge();" />
上周遇到了类似的问题
这就是我想到的(depthUnit设置在其他地方,例如"m"或"ft")
function manageUnitField(inputBox) {
$(inputBox).on("blur", function() { //clicking off the inputbox causes the formatting
var value = ($(this).val()).replace(/[^0-9'.]+/g, ''); //remove non-numeric and keep decimals decimals
var i = 0; //
value = value.replace(/'./g, function() { return i++ === 0 ? '.' : ''; }); //remove all but the first decimal
value = value.replace(/^0+/, ''); // remove leading zeroes
// append depth unit
if (value == "") {
value = 0 + depthUnit;
} else value = value + depthUnit;
if (value.indexOf('.') == 0) {
value = 0 + value;
}
$(this).val(value);
}).focus(function() {
if ($(this).val() == 0 + depthUnit) {
$(this).val('');
}
});
}
如果在十进制之后没有任何小数或什么都没有,那么基本上可以使用depthUnit示例来附加".00"
编辑
你也可以使用
Math.round(number*100)/100
四舍五入到小数点后两位
您可以按照以下方式进行操作。请记住,这是一个演示,您需要对此进行调整以满足您的需求。
$("[name='number-only']").on("change", function() {
var val = this.value;
if (val.match(/'./g)) { //See if it already has a dot
if (val.replace(/'./g, "").match(/^'d+$/) !== null) { //Check if it's number after removing the dot
this.value = parseFloat(val, 10).toFixed(2); //Yes, so format number
} else {
//Not a number, so reset the input value
//Log a msg if need be: "Only numbers allowed!";
this.value = "";
this.focus();
}
} else {
//No dot found, so, see if it's a number
if (val.match(/^'d+$/) !== null) {
this.value = parseFloat(val, 10).toFixed(2); //Yes, so format number
} else {
//Not a number, so reset the input value
//Log a msg if need be: "Only numbers allowed!";
this.value = "";
this.focus();
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="number-only" />
function ValidateAddNewCourseCharge() {
var AdminCharge = $.trim($("[id$='txtAdminCharges']").val());
var OtherCharge = $.trim($("[id$='txtOtherCharges']").val());
isValidDate(EffectiveDate);
if (AdminCharge == "") {
showErrorMessagePopUp("Please Enter Admin Charge!");
return false;
}
else {
if (IsNumeric(AdminCharge)) {
AdminCharge = parseFloat(AdminCharge).toFixed(2);
}
else {
showErrorMessagePopUp("Admin Charge is not Valid. Please try again!");
AdminCharge = "";
return false;
}
}
if (OtherCharge == "") {
showErrorMessagePopUp("Please Enter Other Charge!");
return false;
}
else {
if (IsNumeric(OtherCharge)) {
OtherCharge = parseFloat(OtherCharge).toFixed(2);
}
else {
showErrorMessagePopUp("Other Charge is not Valid. Please try again!");
OtherCharge = "";
return false;
}
}
return true;
}
function IsNumeric(input) {
var RE = /^-{0,1}'d*'.{0,1}'d+$/;
// var RE = /^-{0,1}'d*'.{0,1}'d{2}$/; To Enable user to enter only decimal number
return (RE.test(input));
}
这项工作很好。。。
相关文章:
- 文本框仅接受十进制值,并且应在十进制后追加2个零
- 如何将多个零推送到已经存在的数组
- jQuery从零开始上传多个文件
- 末尾的十进制零不显示.请任何人帮帮我
- jquery修剪数组中的最后2个零
- 如果第一个字符为零,则使用Javascript修剪第一个字符
- 如何验证文本框,使我不能输入零作为第一个数字
- 十进制数字的 Javascript 正则表达式 - 替换非数字和多个小数点
- JQuery 从第二个零开始播放 html5 视频,但如果用户暂停视频,则保留当前帧
- 在句子中如何使第一个字母大写,后跟点('.')和空格(零或多个)
- 如何处理下拉列表的十进制值而不舍入或修剪零
- 如何检查数字是否有两个小数位,并在必要时保留尾随零
- 如何使用 id 输入类型=“文本”JavaScript 中的值设置自动 2 个十进制数
- 如何十进制验证:限制仅输入两个数值
- 我如何修改这个JavaScript正则表达式来检查字符串是否是一个最多必须有2个十进制数字的数字
- 在三个零之前插入空格
- 将变量舍入为1个十进制javascript
- 使用javascript对asp.net中的两个数字和两个十进制值进行文本框验证
- JavaScript search()方法在两个方面等同于零,从而导致问题
- 以十进制开头的零,Javascript