对container.validate()而不是form.validate()进行Jquery验证
我们正在建立一个新的umbraco网站,其中包含许多注册表单,我们正在使用Jquery验证插件验证这些表单 由于每个usercontrol(宏)都包含服务器标记,因此我们必须在每个usercontrol中使用一个表单来进行JQuery验证 但是,由于我们在每个usercontrol中使用一个表单,因此无法在一个页面中添加多个控件 我们要做的是在母版页中添加一个带有runat=“server”的表单标记,然后使用某个容器进行所有验证。validate();而不是form.validate() 像这样的东西对container.validate()而不是form.validate()进行Jquery验证,jquery,umbraco,jquery-validate,Jquery,Umbraco,Jquery Validate,我们正在建立一个新的umbraco网站,其中包含许多注册表单,我们正在使用Jquery验证插件验证这些表单 由于每个usercontrol(宏)都包含服务器标记,因此我们必须在每个usercontrol中使用一个表单来进行JQuery验证 但是,由于我们在每个usercontrol中使用一个表单,因此无法在一个页面中添加多个控件 我们要做的是在母版页中添加一个带有runat=“server”的表单标记,然后使用某个容器进行所有验证。validate();而不是form.validate() 像这
<script type="text/javascript>
$('#regForm').validate();
</script>
<div id="regForm">
<input type="text" class="required" name="Name" id="txtName" runat="server"/>
</div>
验证插件需要将要验证的各个字段包含在一组
标记中
但是,您可以在不必“提交”表单的情况下进行验证。例如,它仍然可以通过onkeyup:
或onfocusout:
处理程序来实现
因此,如果您可以简单地将
更改为类似
的内容,那么您就可以进行验证
编辑:
,唯一需要的表单
属性是操作
,因此没有理由不能用此属性替换
<form id="regForm" action="#"> </form>
默认情况下,asp.net只能有一个带有runat=“server”的表单。但是,正如Sparky的回答所示,页面上可以有多个表单。有关asp.net中多种表单的更多信息,请参见此处:。这是一个迟来的答案,但鉴于现有答案均未被接受,以下是我对此的看法。我遇到了一个类似的情况,我需要验证一个模态对话框表单中包含的div。下面是我如何解决它的
<script type="text/javascript>
jQuery(function($) {
$('form').validate();
$('.continue').click(function() {
var isValid = true;
var $div = $(this).closest("div");
$div.find(":input").each( function() {
isValid = $(this).valid() && isValid;
});
if ( isValid ) {
var $next = $div.hide().next('div');
if ( $next.length == 0 ) {
$(form).submit();
} else {
$next.show();
}
}
});
});
</script>
<form action="#">
<div id="div1">
<input type="text" required name="Name" id="txtName" runat="server"/>
<button class="continue">Continue</button>
</div>
<div id="div2">
<input type="text" required name="Address" id="txtAddress" runat="server"/>
<input type="text" required name="City" id="txtCity" runat="server"/>
<input type="text" required name="State" id="txtState" runat="server"/>
<input type="text" required name="Zip" id="txtZip" runat="server"/>
<button class="continue">Continue</button>
</div>
</form>
@Sparky672:我想要的是在某个容器上执行验证。validate()而不是form.validate();那么问题是什么?你能做到吗?答案是否定的。。。它需要字段位于
中。请看下面我的答案。是的,我知道。。但是我们正在寻找一种方法来在div.validate()上进行验证,因为这样可以避免页面中出现多个表单。谢谢你的回答。@mahesh,我完全理解你的问题,但答案仍然是一样的。。。验证器需要一个
@mahesh,没有理由在一个页面上避免多个
。请通过@Gary.sb查看我的编辑和回答,但此处使用的所有表单都带有runat=“server”,但我们不能在一个页面中添加带有runat=“server”的多个表单。另外,如果我们在母版页中添加一个带有runat=“server”的表单,那么所有其他表单都会出现在这个表单中,我认为这种嵌套是针对html的rules@mahesh,没有其他方法可以让验证器在没有表单的情况下工作。我已经提供了唯一可能的解决方案。但是这里使用的所有表单都带有runat=“server”,但是我们不能在一个页面中添加多个带有runat=“server”的表单。另外,如果我们在母版页中添加一个带有runat=“server”的表单,那么所有其他表单都会出现在这个表单中,我认为这种嵌套是针对html的rules@mahesh,请阅读此答案中的链接。它告诉您如何在页面上放置多个表单。没有其他方法可以让验证器工作。