2017-04-18 54 views
0

我需要驗證的用戶輸入,基於以下條件的GPA計算器的有效輸入:Javascript;基於一系列數字

  • 是一個數字
  • 是3和7,或1.5之間的整數值浮點值。

到目前爲止,我已經試過如下:

var gradeInputMessage = "Please enter your grade for course " +userInput; 
var gradeInput = ""; 

gradeInput = prompt(gradeInputMessage); 

while (
    isNaN(gradeInput) || //grade input is a number 
     gradeInput <3 || gradeInput >7 
) 
{ 
alert ("invalid Course Grade. Please try again"); 
gradeInput = prompt(gradeInputMessage); 
} 

這似乎爲數字3,4,5,6,7做工精細,但我不知道如何將1.5

請原諒我的任何無知,這是我必須完成的一門大學課程,而且我從來沒有做過任何形式的編程,也沒有做任何工作。

感謝任何幫助/反饋。

乾杯, 米切爾

+0

只需添加'前|| gradeInput === 1.5' – Hamms

+1

也許是時候使用一些'regex'了? – Zolbayar

+1

您可以在檢查「if(gradeInput == 1.5)」之前單獨使用if語句。你打算返回一些數據還是你有一些代碼在while循環之下? –

回答

0

你在做一個web應用程序?

html 5與type="number"輸入可以爲你有效的號碼。

我在這裏使用jQuery,但它可以輕鬆地在純js中完成。也validGpa.indexOf(gpa)這是純粹的JS(.indexOf()

這裏我的例子中使用Array保存所有有效GPA,如果任何輸入匹配,然後打印味精xx is valid。如果不匹配,說'Sorry ...'

var validGpa = ['3', '4', '5', '6', '7', '1.5']; 
 
$('#inputgpa').on('change', function() { 
 
    var gpa = $(this).val(); 
 
    if (validGpa.indexOf(gpa) > -1) { 
 
    $('#validation').text(gpa + ' is Valid!'); 
 
    } else { 
 
    $('#validation').text('Sorry! ->' + gpa + '<- is not a valid GPA...'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 

 
<span>Enter your GPA now:<span><br> 
 
<input id="inputgpa" type="number" /><br> 
 
<span id="validation"></span>

2

可能更容易只是檢查你想要的東西,然後他們not

還添加了一個null檢查器,以便人們可以點擊取消退出提示循環。

我的字符串轉換成數通過把+gradeInput

var gradeInputMessage = "Please enter your grade for course "; 
 

 
var gradeInput = prompt(gradeInputMessage); 
 

 
while (
 
    gradeInput !== null && 
 
    (
 
    isNaN(gradeInput) || //grade input is a number 
 
     !((+gradeInput >=3 && +gradeInput <=7) || +gradeInput === 1.5) 
 
) 
 
) 
 
{ 
 
alert ("invalid Course Grade. Please try again"); 
 
gradeInput = prompt(gradeInputMessage); 
 
}

+0

的某個地方拋出'gradeInput = Number(gradeInput)',你會想要確保轉換在檢查之前'提示符號'的結果 – Hamms

+1

@Hamms啊,是的,我在底部加了'Number',但忘了頂端,我也可以用軟檢查:\ –