2011-09-27 75 views
2

我有这个html;jQuery验证总是返回true

<form action="" method="post" name="ApplyForm" id="ApplyForm" enctype="multipart/form-data"> 
    <input type=text class="required"/> 
    <input type="submit" onclick="return validateForm()" class="submit" value="Submit Application" title="Submit application" /> 

和我的脚本;

$(function() { 
     $("#ApplyForm").validate(); 
    }); 

    function validateForm() { 
     alert($(".email").valid()); 

     return false; 
    } 

所以发生了什么事是,如果我提醒了alert($("#ApplyForm").valid());我总是得到真正的但如果我提醒了各个领域我得到预期的结果,但窗体仍回发;

此代码有效,但我不确定为什么验证不在窗体上工作;

function validateForm() { 
     if ($(".required").valid() == 0) 
      return false; 
     else 
      return true; 
    } 

我知道这还不算太多,但我希望别人有这个经验,可以告诉我一个解决方案。

+0

从来没有看到这一点。如果您评论所有字段并逐个取消注释,会发生什么? –

+0

同样的事情发生 – griegs

+0

所以我认为你需要提供更多的信息(html,js版本)给有人帮助你。 –

回答

0
<form action="" method="post" name="ApplyForm" id="ApplyForm" onSubmit="return validateForm()" enctype="multipart/form-data"> 
    <input type=text class="required"/> 
    <input type="submit" class="submit" value="Submit Application" title="Submit application" /> 
+0

对不起,但我想你已经错过了这一点。验证

的调用失败并始终返回true,这是不正确的 – griegs

0

尝试在窗体中添加一个name属性,你的第一个有效的元素:

<input type=text required name='blah' /> 

我花了2小时追查这个同样的问题,而且我发现,如果在形成第一验证元素有一个name属性,那么一切都按照您预期的方式工作(即如果表单无效,.valid()将返回false)。其他验证元素是否具有名称属性似乎没有区别。

在正常形式中,您肯定需要名称属性,因为这是数据提交到服务器时使用的名称属性。但是在更现代的环境中,比如那些使用Knockout的环境,没有理由对输入元素具有name属性,因为数据绑定的作用是保持数据模型的更新。

0

您应该添加

<input type="text" data-val="true" name="name" data-required="1"> 

一个不引人注目的HTML 5兼容的属性描述要连接到输入验证领域

其他信息Click here