无法使用javascript转换在文本框中键入浮点值

无法使用javascript转换在文本框中键入浮点值,javascript,jquery,html,Javascript,Jquery,Html,在下面的代码中,即使用户键入正值,我也需要为文本设置负数。这很好 但是,它不允许我输入浮点值。当我尝试从键盘输入小数点时,它将不允许输入小数点。那是因为我取的是绝对值 有人知道怎么解决这个问题吗?用户还应该能够输入浮点值,如34.50。我哪里出错了?我应该如何纠正 $('#loss').bind(“键控模糊”,函数(){ var a=Math.abs(数字($(this.val()); var c=a*-1; $('损失').val(c); }); 这里的问题在于Javascript类型转换。

在下面的代码中,即使用户键入正值,我也需要为文本设置负数。这很好

但是,它不允许我输入浮点值。当我尝试从键盘输入小数点时,它将不允许输入小数点。那是因为我取的是绝对值

有人知道怎么解决这个问题吗?用户还应该能够输入浮点值,如
34.50
。我哪里出错了?我应该如何纠正

$('#loss').bind(“键控模糊”,函数(){
var a=Math.abs(数字($(this.val());
var c=a*-1;
$('损失').val(c);
});

这里的问题在于Javascript类型转换。当您输入小数点时,字符串值“10”将转换为数字10,之后您将用丢失小数点的字符串“10”覆盖输入的值

有很多方法可以解决这个问题,当输入控件失去焦点时,可以添加减号,但我建议使用所谓的“输入装饰”表示此字段存储负数,并在表单处理过程中实际否定该数字。

我同意Rory对您的问题的评论,您希望做的可能是不好的做法,但如果您坚持,这里有一个解决方案

当您将值转换为
数字
时,您的
将被删除,因为它被视为字符串,因为后面没有数字

下面的代码检查是否在末尾添加了句点,如果是,则在再次设置值时添加句点

现在请记住,如果用户输入字母、第二个句点等,您将遇到问题。代码将返回
NaN
,用户将必须选择所有文本并替换它,因为退格键也不起作用。但是这个问题也存在于您的原始代码中

$('#loss').bind(“键控模糊”,函数(){
var t=$(本);
var值=t.val();
var lastCharacter=value.substring(value.length-1);
var hasPeriod=false;
如果(lastCharacter=='。){
hasporiod=true;
} 
var a=数学绝对值(数字(值));
var c=a*-1;
t、 val(c+(hasporiod?':'');
});

问题在于每次按键时都会更新值。因此,只要添加小数点,就会通过
Math.abs()
运行该值,从而将其删除。它将
1.
转换为
1
,因为
本身是冗余的。您将遇到许多类似的问题,因此我建议您将
-
放在输入框之外,并验证该值是否为数字。然后,您可以在需要时将其保存为负片,而无需弄乱UI中显示的值。