2013-12-10 2 views
-2

привет я хочу знать, как написать код подтверждения для номера с двумя знаками после запятой, например 45,80Validate десятичного в JavaScript

function submitform4() 
{ 

    var min=00.01; 
    var max = 100.00; 
    var num = parseInt(document.getElementById('valid').value); 

    console.log(num); 

    if (min > num || max < num) { 
     alert(num + ' is not between ' + min + ' and ' + max); 
    return false; 
    } 
} 

это то, что я скопировал из моей работы и думал, что я мог бы изменить это, но не работает.

+0

Что именно вы пытаетесь проверить? А что не работает? Предполагаем ли мы, что '45.80' - это значение, хранящееся в' # AgeGrade'? Если да, возможно, ваша проблема пытается разобрать его как «Int» (целое число) –

+0

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

+0

Извините, все еще довольно смущен. «У меня нет подходящего сценария для этого» <- для чего? «добавить число» <- добавить номер к чему? –

ответ

1

Ну, это то, что я бы сделал, если я правильно понял.

Это решает несколько проблем:

  • JavaScript не нравится числовое значение 00.01. Используйте 0.01 вместо
  • используйте parseFloat на вашем input значение. parseInt будет округлить до целого
  • возврата true в случае успеха (не неопределенными)

function submitform4() { 
    var MIN = 0.01; 
    var MAX = 100.00; 

    var input = document.getElementById('AgeGrade'); 
    var inputValue = parseFloat(input.value); 

    var is_valid = (MIN > inputValue || MAX < inputValue); 

    if (is_valid) { 
     input.value = inputValue.toFixed(2); // set to 2 decimal places 
     return true 
    } else { 
     alert(inputValue + ' is not between ' + MIN + ' and ' + MAX); 
     return false; 
    } 
} 
+0

его не работает, когда я добавляю его в свой скрипт, его фактически испортил его, и даже остальные части скриптов перестают работать :(там есть что-то, что я не хватает? Что я должен добавить в HTML-часть? – user3084317

+0

Я знаю, что я задаю много вопросов, но я действительно согласен с вашей помощью. – user3084317

+0

Это нормально. У меня была синтаксическая ошибка ('==' вместо '='). Мне действительно нужно начать проверку кода haha. далека от того, что теперь вы получаете –

0

Я хотел бы попробовать parseFloat():

function submitform4() 
{ 
    var min = parseFloat("00.01"); 
    var max = parseFloat("100.00"); 
    var num = parseFloat("200.20"); 
    console.log(num); 
    if (min > num || max < num) { 
    alert(num + ' is not between ' + min + ' and ' + max); 
    console.log('false'); 
    } 
} 
submitform4(); 

См Feedle

Иначе вы, конечно, есть ошибка:

Uncaught SyntaxError: Unexpected number

См не работаетFeedle

+0

AFAIK JavaScript имеет только один тип номера. вы просто добавляете дополнительный шаг. Правильно? Почему вы хотите начать как строку? –

+0

@ Zach L: потому что OP задает вопрос о валидации значения в '' – jalynn2

+0

. У меня сложилось впечатление, что 'min' и' max' являются * константами *, а не вводятся.Он ищет значение '# ageGrade', которое, я думаю, безопасно предположить, это вход. Однако у вас есть важный момент. 'min = 00.01' не работает. Ему нужно будет изменить это на 'min = 0.01'. –

1

Вы могли бы сделать somethi ng вот так:

function submitForm(numberToEvaluate){ 
    var min = 0.0; 
    var max = 100; 

    //Instead of being passed in 
    //This would be grabbed from DOM element 
    var num = numberToEvaluate; 


    console.log(num); 

    if (min > num || max < num) { 
     alert(num + ' is not between ' + min + ' and ' + max); 
     return false; 
    } 
} 

submitForm(-1); 
submitForm(37); 
+1

У Javascript есть проблема с числовыми значениями, имеющими более одного 0 до десятичной точки. –

+0

Это можно продемонстрировать в jsfiddle: http: //jsfiddle.net/amspianist/3MH35/1/ –

+0

Что мне нужно положить в HTML-часть? – user3084317

0

Код выглядит прекрасно (почти), в зависимости от того, как вы собираетесь использовать i функцию.

Если вы используете функцию в качестве подтверждения перед отправкой, например if(submitform4()), то вам нужно добавить return true; в конец функции, чтобы вернуть true, если ответ не является ложным.

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