为什么这个表单在返回false后仍然提交?

时间:2009-11-04 17:38:34

标签: javascript html

我计划显示/隐藏div以验证表单。 但div只显示一瞬间,然后表单被提交......

任何想法为什么?

这是代码:

function validateForm() {
var name = nameEmpty(document.getElementById("annonsera_name"));
if (nameEmpty(name)){return false;}
return false;
     }
function nameEmpty(fld){
    if (fld.value==0) {
        document.getElementById("annonsera_nameempty_error").style.display='block'; 
        document.getElementById("annonsera_namenotvalid_error").style.display='none';
        document.getElementById("annonsera_name").focus();
        return false;
    }
    else if (fld.value.match(alphaExp)) {
        document.getElementById("annonsera_namenotvalid_error").style.display='block';  
        document.getElementById("annonsera_name").focus();
        document.getElementById("annonsera_nameempty_error").style.display='none';  
        return false;
    }

         document.getElementById("annonsera_nameempty_error").style.display='none'; 
        document.getElementById("annonsera_namenotvalid_error").style.display='none';
    return false;

            }

以下是表格:

<form name="annonsera" id="annonsera" method="post" enctype="multipart/form-data" onSubmit="return validateForm();">

2 个答案:

答案 0 :(得分:1)

它可能会产生错误,因此永远不会返回任何内容。假设您使用的是Firefox,请检查一下javascript控制台吗?

我看到这里看起来像一个问题,你在两次调用nameEmpty() - 一次使用字段,另一次使用(推测?)布尔值:

var name = nameEmpty(document.getElementById("annonsera_name")); // Returns boolean
if (nameEmpty(name)){return false;} // Tries to pass boolean back into nameEmpty?

答案 1 :(得分:0)

也许有点偏离主题,但这里有......

你应该考虑JQuery Validation,它很好,干净且易于实现。我已经做了几次,从那以后再也没有回头。它确实胜过你使用的手动验证方法:)

查看example,确实没有太多代码要编写,以便进行验证。

在您的示例中(未经测试):

<script>
  $(document).ready(function(){
    $("#annonsera").validate({
      rules: {
        annonsera_name: {
          required: true,
          minlength: 1
        }
      },
      messages: {
        annonsera_name: {
          required: "You need to write your name",
          minlength: jQuery.format("At least {0} characters required!")
        }
      }
    })
  });
</script>

通过dhtml和css还有很多自定义方法,请查看options

相关问题