用javascript控制浮点值

用javascript控制浮点值,javascript,Javascript,为了控制我的输入类型并验证其值在我的表单中是一个浮点值,我用javascript处理它,如下所示: function verifierNombre () { var champ=document.getElementById("nperformed"); var str = champ.value; if(str.value==' '){champ.focus();} if (isNaN(str)) { alert("Invalid Valid! the field must be a numb

为了控制我的输入类型并验证其值在我的表单中是一个浮点值,我用javascript处理它,如下所示:

function verifierNombre () {
var champ=document.getElementById("nperformed");
var str = champ.value;
if(str.value==' '){champ.focus();}
if (isNaN(str)) {
alert("Invalid Valid! the field must be a number");
champ.focus();
return false;
}
return true;

}
但它仍然是错误的,因为它不接受真正的浮动。 因此,当输入像“11,2”这样的值时,警报将被解除

我想知道如何使用javascript控制浮点值。
谢谢。

我认为问题可能是它没有考虑
11,2
是一个有效的浮动,而是期望类似
11.2
的东西。尝试一下
11.2
,看看它是否有效。如果这是问题所在,我不确定是否可以设置一些本地化选项,或者在运行
isNaN
之前是否需要手动交换这两个选项

编辑啊,确认一下:

在许多国家,通常使用小数点逗号代替小数点。不幸的是,在JavaScript中,无论操作系统中设置了哪个国家,都必须使用小数点。在JavaScript中,只有小数点后的数字才会用于计算,这将产生不正确的结果


我认为问题可能在于,它没有将
11,2
视为有效的浮点值,而是期望类似
11.2
的值。尝试一下
11.2
,看看它是否有效。如果这是问题所在,我不确定是否可以设置一些本地化选项,或者在运行
isNaN
之前是否需要手动交换这两个选项

编辑啊,确认一下:

在许多国家,通常使用小数点逗号代替小数点。不幸的是,在JavaScript中,无论操作系统中设置了哪个国家,都必须使用小数点。在JavaScript中,只有小数点后的数字才会用于计算,这将产生不正确的结果


11,2
不是有效的浮点。像Javascript一样(据我所知),每种编程语言都使用
作为小数点。因此,请尝试使用
11.2

如果您想接受
,您可以这样做:

function verifierNombre() {
  var champ=document.getElementById("nperformed");
  var str = champ.value;
  if(str.value==' ') champ.focus();
  if (isNaN(str.replace(',','.')) {
    alert("Invalid Valid! the field must be a number");
    champ.focus();
    return false;
  }
  return true;
}

function localize_float(champ) {
  champ.value = champ.value.replace(",",".");
}
<form name="..." action="..." method="..." onsubmit="localize_float(document.getElementById("nperformed");)">
在表单中,您添加了
onsubmit
-属性,如下所示:

function verifierNombre() {
  var champ=document.getElementById("nperformed");
  var str = champ.value;
  if(str.value==' ') champ.focus();
  if (isNaN(str.replace(',','.')) {
    alert("Invalid Valid! the field must be a number");
    champ.focus();
    return false;
  }
  return true;
}

function localize_float(champ) {
  champ.value = champ.value.replace(",",".");
}
<form name="..." action="..." method="..." onsubmit="localize_float(document.getElementById("nperformed");)">

11,2
不是有效的浮点。像Javascript一样(据我所知),每种编程语言都使用
作为小数点。因此,请尝试使用
11.2

如果您想接受
,您可以这样做:

function verifierNombre() {
  var champ=document.getElementById("nperformed");
  var str = champ.value;
  if(str.value==' ') champ.focus();
  if (isNaN(str.replace(',','.')) {
    alert("Invalid Valid! the field must be a number");
    champ.focus();
    return false;
  }
  return true;
}

function localize_float(champ) {
  champ.value = champ.value.replace(",",".");
}
<form name="..." action="..." method="..." onsubmit="localize_float(document.getElementById("nperformed");)">
在表单中,您添加了
onsubmit
-属性,如下所示:

function verifierNombre() {
  var champ=document.getElementById("nperformed");
  var str = champ.value;
  if(str.value==' ') champ.focus();
  if (isNaN(str.replace(',','.')) {
    alert("Invalid Valid! the field must be a number");
    champ.focus();
    return false;
  }
  return true;
}

function localize_float(champ) {
  champ.value = champ.value.replace(",",".");
}
<form name="..." action="..." method="..." onsubmit="localize_float(document.getElementById("nperformed");)">

11,2不是有效的浮点,因为“小数点”必须是点(.)而不是逗号(,)

将逗号替换为点:

var str = champ.value;
str = str.replace(",", ".");
而且


这不是一个很好的条件。改为使用修剪函数并与“.”进行比较。

11,2不是有效的浮点,因为“小数点”必须是点(.)而不是逗号(,)

将逗号替换为点:

var str = champ.value;
str = str.replace(",", ".");
而且


这不是一个很好的条件。改为使用微调函数,并与“.”进行比较。

javascript中的所有数字都已经是64位浮点数。很抱歉,这意味着已启动;)javascript中的所有数字都已经是64位浮点数。很抱歉,这意味着已启动;)我个人会让localize_float接受一个参数并返回更正的金额,以防页面上有其他元素需要更正。我个人会让localize_float接受一个参数并返回更正的金额,如果页面上还有其他元素需要更正,我只是认为逗号是一个拼写错误,我只是认为逗号是一个拼写错误。