Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么此表单在返回后仍然提交错误?_Javascript_Html - Fatal编程技术网

Javascript 为什么此表单在返回后仍然提交错误?

Javascript 为什么此表单在返回后仍然提交错误?,javascript,html,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) {

我计划显示/隐藏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();">

它可能正在生成错误,因此从不返回任何内容。假设您使用的是Firefox,您是否检查过javascript控制台

我看到这里出现了一个问题,您两次调用nameEmpty(),一次调用一个字段,另一次调用一个(大概?)布尔值:

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

也许有点离题,但接下来

你应该认真考虑一下,它很好,很干净,很容易实现。我做过几次,从那以后就再也没有回头。它肯定比您使用的手动验证方法要好:)

检查一下,确实没有那么多代码需要编写,以进行验证

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


$(文档).ready(函数(){
$(“#annonsera”).validate({
规则:{
annonsera_名称:{
要求:正确,
最小长度:1
}
},
信息:{
annonsera_名称:{
必填项:“您需要填写您的姓名”,
minlength:jQuery.format(“至少需要{0}个字符!”)
}
}
})
});

还有很多通过dhtml和css进行定制的方法,请查看。

您可能在某个地方遇到了javascript错误,导致函数中止并导致表单像往常一样提交。JQuery验证还远远不够干净。自过去18个月以来,它仍然有很多bug,并且已经发生了变化,几乎没有什么东西是不兼容的。这是一段非常好用的代码,但并不漂亮和干净。就我所使用的范围而言,它非常可靠,我仍然认为编写验证规则的声明式方式胜过任何一天的手动验证。我还没有发现任何bug,但也没有查找它们。查看我看到有30个活动bug报告。考虑到他们的平均报告生命周期(15周5天),这一数字相当大。尽管如此,我仍然推荐JQuery验证,只要bug不会影响您的解决方案。
<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>