JavaScript的;基于一系列数字的有效输入

时间:2017-04-18 01:15:25

标签: javascript validation floating-point

我需要根据以下标准验证GPA计算器的用户输入:

  • 是一个数字
  • 是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

请原谅我的无知,这是我必须完成的大学课程,我从未做过任何形式的编程,也不做任何工作。

感谢任何帮助/反馈。

干杯, 米切尔

2 个答案:

答案 0 :(得分:2)

可能更容易检查您想要的东西,然后not

还添加了null检查程序,以便人们可以点击取消退出提示循环。

我将+放在gradeInput

前面,将字符串转换为数字

&#13;
&#13;
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);
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

你在做网络应用吗?

带有type="number"输入的html 5可以为您提供有效的数字。

我在这里使用jQuery,但它可以很容易地在纯js中完成。同样validGpa.indexOf(gpa)这是纯粹的js(.indexOf()

此处的示例使用Array保存所有有效GPA,如果有任何输入匹配,则打印msg 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>