【发布时间】:2014-11-05 15:35:55
【问题描述】:
我有一个选项卡设置,其中每个选项卡的内容都是通过 ajax 加载的。
#tab1 是静态的 - 并且经过验证的表单可以通过在页面加载时运行的 $(".validate").validate() 正常工作。
但在tab2 中存在相同的形式 - 它根本没有得到验证。
我假设它是因为调用初始函数时不存在第二种形式。
但即使我在运行 ajax 时再次调用 validate() 函数 - 即使那样,表单也不会被验证。
HTML:
<div class="tabbable">
<ul class="nav nav-tabs">
<li class="active"><a href="#tab1" data-toggle="tab">Personal Details</a></li>
<li><a href="test-content.html" class="ajax" data-toggle="tab">Finances</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tab1">
<form name="ftblPaymentsadd" id="ftblPaymentsadd" action="#" method="post" enctype="multipart/form-data" class="validate" >
<input type="text" name="sss" class="required">
<input type="submit" value="go">
</form>
</div>
<div class="tab-pane active" id="tab2">
<!-- content will be loaded via ajax -->
</div>
</div>
</div>
内容来自text-content.html:
<form name="ftblPaymentsaddww" id="ftblPaymentsaddww" action="#2" method="post" enctype="multipart/form-data" class="validate" >
<input type="text" name="ssswwws" class="required">
<input type="submit" value="go">
</form>
JS:
$('.nav-tabs .ajax').click(function (e) {
var thisTab = e.target // activated tab
var pageTarget = $(thisTab).attr('href');
var itemNumber = $(this).parent().index()+1;
$('.tab-pane').removeClass('active');
$("#tab"+itemNumber).html('loading...');
$("#tab"+itemNumber).load(pageTarget,function(){
$(".validate").validate();
}).addClass('active');
});
【问题讨论】:
-
您是否向
.validate()添加任何规则?如果您在 DOM 准备就绪时添加它们,则必须在 ajax 完成后重新添加它们 -
没有添加规则。我认为再次致电
validate()就足够了。您能否进一步解释一下要添加什么以及在哪里添加?
标签: jquery twitter-bootstrap jquery-validate