Jquery-只验证多个表单中的一个表单
所以,我在So上浏览了很多线程,但找不到我的相关查询。嗯,我有一个类似于SO的网络应用程序,在这里可以提问,人们可以自由地对问题进行评论/回答(也可以对答案进行评论) 我通过API获得特定问题的Jquery-只验证多个表单中的一个表单,jquery,forms,validation,jquery-validate,Jquery,Forms,Validation,Jquery Validate,所以,我在So上浏览了很多线程,但找不到我的相关查询。嗯,我有一个类似于SO的网络应用程序,在这里可以提问,人们可以自由地对问题进行评论/回答(也可以对答案进行评论) 我通过API获得特定问题的答案,形成相应的HTML并将其附加到div中。我的HTML有点像这样:- <div> <p> Some Answer </p> <div class="comments"></div> <form id="form
答案
,形成相应的HTML并将其附加到div中。我的HTML有点像这样:-
<div>
<p> Some Answer </p>
<div class="comments"></div>
<form id="form_62" class="comment_form" method="POST" action="URL"> <!--This id is variable-->
<textarea rows="3" name="comment"></textarea>
<button type="submit">Comment </button>
</form>
</div>
</div>
这不符合预期
所以,我的问题是如何验证提交的当前表单?如果动态添加了任何带有表单的div,则创建一个基于Id对表单应用验证的函数,并在动态添加div或表单时调用该函数
function applyValidate(id){
$(id).validate({
ignore: '',
onsubmit : false,
rules: {
comment: {
required: true,
minlength: 10
}
}
});
}
若一次在页面中加载所有表单,并且希望在每个表单上绑定validate,那个么可以使用下面的代码
$(函数(){
$(文档).on('submit','comment_form',函数(e){
form_id=$(this).id
e、 预防默认值();
if($(this).valid()){
console.log('success')
}
});
/*如果在页面中未同时动态添加和呈现所有表单,则必须对每个表单应用validate,否则在$(function(){})之外添加applyValidate(id)函数;并在动态添加表单时调用applyValidate(id)函数*/
$('.comment_form')。每个(函数(){
//附加到页面上的所有表单元素
$(此)。验证({
忽略:“”,
问题:错,
规则:{
评论:{
要求:正确,
最小长度:10
}
}
});
});
});代码>
一些答案
评论
一些答案
评论
一些答案
评论
我的评论中提到的代码问题:
$(function(){
// can NOT use submit handler since the validate plugin is already capturing this event
$(document).on('submit', '.comment_form', function(e){
....
// can NOT use 'valid()' before 'validate()' has initialized
if($(this).valid()){
....
}
})
// $(this) is meaningless here since it's not inside a pending jQuery method being invoked
$(this).validate({
....
});
})
提交表单时,您不会调用.validate()
。.validate()
方法仅用于初始化表单上的插件,而不调用表单验证。因此,通常在加载页面时调用.validate()
由于在加载页面时,您的表单还不存在,因此只有在创建动态表单时才调用.validate()
,而不是提交表单。换句话说,调用.validate()
方法是创建此表单的任何函数中的最后一步,因为您的提交按钮是type=“submit”
验证插件将自动捕获它,您不需要submit
或单击
处理程序来获得验证
$(function(){
function create_dynamic_form() {
// code to dynamically create this form HERE
// initialize validation on this new form ->
$('#this-new-form-id').validate({
....
});
});
});
如果您向我们展示了动态创建新表单的实际代码,我的示例可能会更有效。当您说当前表单时,表单元素的ID是什么变化,对吗?是的。确实如此……我相信您必须使用类,请参见下面的答案。请显示动态创建表单的代码。
$(function(){
function create_dynamic_form() {
// code to dynamically create this form HERE
// initialize validation on this new form ->
$('#this-new-form-id').validate({
....
});
});
});