[英]Replacing if the first number is a zero and the number is greater than 2 places
我有一个正在使用的计算器,遇到了一个问题。 为了避免用户不能将字段留空,如果字段为空,我将强制为零。 很好,但是问题是,当删除字段中的文本以删除零并输入新数字时,它会自动输入零,因此我的新数字如下所示:05
如果号码中有2个以上的地方并且第一个数字为零,那么我应该如何执行替换?将零替换为零? 这是我用于计算器的代码。
$(function(){
calculate();
$('.input').keypress(function (e) {
//if the letter is not digit then display error and don't type anything
if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
return false;
}
});
$('.input').on('keyup',function(){
if($(this).val()==''){
$(this).val('0');
}
calculate();
});
});
function calculate(){
var d6 = parseFloat(($('#d6').val()).replace(/,/g,''));
var d20 = parseFloat(($('#d20').val()).replace(/,/g,''));
var b20 = d6;
var e20 = parseFloat(($('#e20').val()).replace(/,/g,''));
var f20 = d20*e20;
var f22 = b20/f20;
var f23 = (52-f22)*f20;
$('#f20').html(formatCurrency(f20));
$('#f22').html(f22.toFixed(2));
$('#f23').html(formatCurrency(f23));
}
function formatCurrency(x) {
return '$'+x.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",");
}
更改调零代码以使用blur()事件,即当该字段失去焦点时。
$('.input').blur(function(){
if($(this).val()=='') { $(this).val('0'); } });
代替使用keyup和keypress事件来检查和将空白替换为零,请使用change事件。
$(function(){
calculate();
$('.input').keypress(function (e) {
//if the letter is not digit then display error and don't type anything
if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
return false;
}
});
$('.input').on('keyup',function(){
calculate();
});
$('.input').on('change',function(){
if($(this).val()==''){
$(this).val('0');
}
});
});
function calculate(){
var d6Val = ($('#d6').val() !== "")? $('#d6').val() : '0';
var d20Val = ($('#d20').val() !== "")? $('#d20').val() : '0';
var e20Val = ($('#e20').val() !== "")? $('#e20').val() : '0';
var d6 = parseFloat((d6Val).replace(/,/g,''));
var d20 = parseFloat((d20Val).replace(/,/g,''));
var b20 = d6;
var e20 = parseFloat((e20Val).replace(/,/g,''));
var f20 = d20*e20;
var f22 = b20/f20;
var f23 = (52-f22)*f20;
$('#f20').html(formatCurrency(f20));
$('#f22').html(f22.toFixed(2));
$('#f23').html(formatCurrency(f23));
}
function formatCurrency(x) {
return '$'+x.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",");
}
还有一件事。 仅当您从该输入聚焦时才会触发Change事件。
如果您遇到任何问题,请告诉我。
如果您本质上是试图将其转换为带格式的数字,则可以尝试键入强制:
'' + new Number('') // "0"
'' + new Number('0') // "0"
'' + new Number('05') // "5"
'' + new Number('0000.2') // "0.2"
我假设从按Backspace键删除了该文本。
如果是这种情况,那么当您将退格键设置为零时,将触发键控处理程序,这将检测不到输入,然后添加零。
好吧,也许这样做。
$('.input').on('keyup',function(){
if($(this).val()=='' && $(this).val().substring(0,2) === ' ' || '') {
$(this).val('0');
}
calculate();
});
});
首先,您很难做到这一点。 并尝试此操作...如果用户单击输入,则将清除该输入,并且用户可以输入所需的任何数字...
$( ".input" ).focus(function() {
(this).val('');
});
如果您使用的是HTML5表单,则可以避免使用以下代码:
<input type="number" placeholder="Type a number" required>
必需属性是布尔属性。
如果存在,它指定必须填写输入字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.