Javascript函数未触发

Javascript函数未触发,javascript,html,Javascript,Html,我的HTML的头部中有一个JavaScript函数 <script> function validateForm() { var apple = document.getElementById('apple').value; var err = 0; if (isNaN(apple)) { err += 1; } if (err != 0) { alert('Please check your

我的HTML的
头部中有一个JavaScript函数

<script>
   function validateForm() 
   {
     var apple = document.getElementById('apple').value;
     var err = 0;
     if (isNaN(apple)) {
        err += 1;
    }
    if (err != 0) {
        alert('Please check your input!');
        return false;
    } 
    else 
        return true; 
}
</script>

函数validateForm()
{
var apple=document.getElementById('apple').value;
var-err=0;
if(isNaN(苹果)){
误差+=1;
}
如果(错误!=0){
警报('请检查您的输入!');
返回false;
} 
其他的
返回true;
}
表格如下:

 <form name="orderForm" onSubmit="return validateForm();" method="post">  
    <div class="input-control text span5">
          <input class="span5" type="text" placeholder="Each @ $4.9" id="apple" name="apple" onChange='checkApple(this.value)'>
    </div>
  </form>

所有括号都已完成,没有打字错误


当我提交带有非数值的表单时,表单仍然会被提交,而不是出错。我可以知道这有什么问题吗?

您必须有输入type=“submit”或按钮type=“submit”才能触发onsubmit。您需要接受一个事件:

function validateForm(e) {
并防止:

if (err != 0) {
    e.preventDefault()
    ...

另一方面,我建议您重新构造代码,使其不那么复杂,例如:

var apple = document.getElementById('apple').value;
if (isNaN(apple)) {
    ...

无需使用
err
变量。

如果您试图检查输入是否为数字,这可能会起作用:

function validateForm() 
{
     var apple = document.getElementById('apple').value;
     var err = 0;
     if (!isNaN(parseFloat(apple)) && isFinite(apple)) {
        err += 1;
     }
     if (err != 0) {
        alert('Please check your input!');
        return false;
     } 
     else 
        return true; 
}

你试过不使用JavaScript吗
使用
而不是
@Puneet似乎代码在HTML5中,所以没有。如果没有它也提交了。等等什么?从什么时候起,“某个字符串”不是NaN(即数字)?@Kolink(再次)修复