2015-01-26 5 views
3

Все в моем скрипте отлично работает, за исключением моего последнего заявления «если», оно не выполняется, и я не могу понять это для жизни меня! Я знаю, что у меня есть ошибка где-то, но я просто не могу понять, почему я новичок в JavaScript.Добавить значение в 2 десятичных разряда

Вот что я пытаюсь добиться от последнего утверждения: -

Если переменная «AgeGrade» переменная спички «Expression», то примите значение и значение изменения, введенные до 2 знаков после запятой. Например. Если 5,999 Введенный изменится на 5,99

Вот код: -

function agegrade() { 

    var AgeGrade = document.submitrunnertime.AgeGrade.value; 
    var expression = /^[0-9]*\.?[0-9]*$/ 

    if (AgeGrade == null || AgeGrade == "") { 
     document.submitrunnertime.AgeGrade.value = "-1"; 
     return true; 
    } else if (AgeGrade != document.submitrunnertime.AgeGrade.value.match(expression)) { 
     alert("Error - Need a number!"); 
     return false; 
    } else if (AgeGrade == document.submitrunnertime.AgeGrade.value.match(expression)) { 
     document.submitrunnertime.AgeGrade.value = AgeGrade.toFixed(2); 
     return true; 
    } else 
     return false; 
} 

Любая помощь будет принята с благодарностью.

+0

Какой путь выполнен? –

+0

Вы должны изменить свое регулярное выражение на /^[0-9]*(\.[0-9]*)?$/ – maja

+1

возможный дубликат http://stackoverflow.com/questions/4187146/display-two-decimal- places-no-rounding –

ответ

0

Ваш последний if заявление, вероятно, завершается с ошибкой, как: AgeGrade.toFixed is not a function.

Как вы можете это исправить?

Метод .value(), который вы используете, возвращает строку. Однако метод .toFixed() работает только с числами (MDN doc). Прежде чем использовать его, попробуйте преобразовать AgeGrade в поплавок:

document.submitrunnertime.AgeGrade.value = parseFloat(AgeGrade).toFixed(2); 
+0

Спасибо за ввод. Хотя это позволило мне представить значение, которое округляет число, а не зачищать число точно до двух знаков после запятой - любые идеи? –

+0

Как уже упоминалось, ознакомьтесь с этим ответом: http://stackoverflow.com/questions/4187146/display-two-decimal-places-no-rounding – Para

+0

В вашем конкретном случае это означает: 'Math.floor (parseFloat (AgeGrade) * 100)/100' – Para

0

вы можете попробовать. У меня есть использовать его во многих JavaScripts для округления

document.submitrunnertime.AgeGrade.value = Math.round(AgeGrade * 100)/100; 
+0

Проблема заключается в выражении 'if', а не в округлении, в соответствии с его вопросом. –