0

head我的 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>

表格如下所示:

 <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>

所有括号都完成了,没有错字。

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

4

3 回答 3

1

您需要接受一个事件:

function validateForm(e) {

并防止它:

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

在不相关的说明中,我建议您重组代码以使其不那么复杂,例如:

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

不需要err变量。

于 2013-08-30T12:20:01.473 回答
0

您必须输入 type="submit" 或按钮 type="submit" 才能触发 onsubmit

于 2013-08-30T12:19:39.133 回答
0

如果您尝试检查输入是否为数字,这可能有效:

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; 
}
于 2013-08-30T12:22:55.393 回答