测试输入的值是否为数字

时间:2016-08-11 19:35:16

标签: javascript html

我有一项任务要输入°F并将其转换为°C。如果输入的值不是数字,我还必须显示错误消息而不是数字。我做什么我无法让它正常工作。当我输入字母时,它只显示-17.77777777777778°C而不是messege。我可以帮到你吗?

function temperatura(){
  var temp = document.getElementById("tempF").value;
  if (isNaN(temp)){
    document.getElementById("demo2").innerHTML =
    "You need to enter a number!";
  } else {
    document.getElementById("demo2").innerHTML = uCelzije(temp)+" °C";
  }
}
function uCelzije(f){
  return (5/9) * ( Number(f) - 32 );
}
 

<p>Enter Fahrenheit to convert it to Celsius.</p>
<form>
  <input type="number" id="tempF">°F
</form>
<button onclick="temperatura()">Try it</button>
<p id="demo2"></p><br>

3 个答案:

答案 0 :(得分:1)

这是因为您的输入是数字类型。如果您键入一个字母,则不接受此值,它仍为空字符串:

isNaN(''); // false

然后在uCelzije函数中将此空字符串转换为0:

(5/9) * ( 0 - 32 ); // -17.77777777777778

因此您还应该检查输入是否为空,例如:

if (temp == '' || isNaN(temp)){

答案 1 :(得分:0)

Antonio,如果我理解得很好,也许你只需要添加一个新的验证来检查一个空字符串,按照你构建代码的方式。尝试在脚本中添加空字符串验证。

&#13;
&#13;
var temp = document.getElementById("tempF").value;
    if (isNaN(temp) || temp.trim() == ""){
      document.getElementById("demo2").innerHTML =
      "You need to enter a number!";
    } else {
      document.getElementById("demo2").innerHTML = uCelzije(temp)+" °C";
    }
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您需要将临时值解析为int。这将确保temp是数字或NaN。一切都会好起来的。

编辑:这是@Servuc在问题评论中提出的。

<p>Enter Fahrenheit to convert it to Celsius.</p>
<form>
  <input type="number" id="tempF">°F
</form>
<button onclick="temperatura()">Try it</button>
<p id="demo2"></p>
<br>
<script>
  function temperatura() {
    var temp = parseInt(document.getElementById("tempF").value);
    if (isNaN(temp)) {
      document.getElementById("demo2").innerHTML =
        "You need to enter a number!";
    } else {
      document.getElementById("demo2").innerHTML = uCelzije(temp) + " °C";
    }
  }

  function uCelzije(f) {
    return (5 / 9) * (Number(f) - 32);
  }
</script>