2010-05-20 3 views
0

контролировать свой тип входа и убедитесь, что его значение довольно поплавок в моей форме я имею дело с ним в 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 number"); 
champ.focus(); 
return false; 
} 
return true; 

} 

, но это все еще ложь, потому что Безразлично» t принимать действительно плавает. , поэтому при вводе значения типа «11, 2» предупреждение сбрасывается.

Я хочу знать, как я могу управлять значениями float с помощью javascript. спасибо.

+1

Что такое «смятый»? –

+1

Все номера в javascript уже являются 64-битными числами с плавающей запятой –

+0

Invalid Valid !? :-) –

ответ

5

Я считаю, что проблема может заключаться в том, что он не рассматривает 11,2 как действительный поплавок, вместо этого ожидает что-то вроде 11.2. Дайте 11.2 попробовать и посмотреть, работает ли он. Если это проблема, я не уверен, есть ли какой-либо параметр локализации, который можно установить, или если вам нужно вручную поменять местами два перед запуском isNaN.

Редактировать Ах, this webpage подтверждает это:

Во многих странах это обычная практика, чтобы использовать вместо десятичной запятой десятичной точки. К сожалению, в JavaScript вы должны использовать десятичную точку, независимо от того, какой у вас параметр в вашей операционной системе. В JavaScript для вычислений будут использоваться только цифры после десятичной запятой, что приведет к неправильным результатам.

+0

Я просто подумал, что запятая была опечаткой. –

1

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(",","."); 
} 

И в вашей форме вы добавляете onsubmit атрибута по так:

<form name="..." action="..." method="..." onsubmit="localize_float(document.getElementById("nperformed");)"> 
+0

Лично я бы получил localize_float в параметре и вернул исправленную сумму, если на странице есть другие элементы, которые нужно исправить. – Corey

+0

Я изменил свой пример – jigfox

0

11,2 не допустимый float, потому что «десятичная точка» должна быть точкой (.), а не запятой (,).

Заменить запятую с точкой:

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

Кроме того,

if(str.value==' '){champ.focus();} 

не очень хорошее состояние. Вместо этого используйте функцию обрезки и сравните с «".

Смежные вопросы