我有一个网站,其中有一个基于 jQuery 的 slider Awkward Showcase .
在这些幻灯片中,我有一个用于新用户注册的 Rails 表单。我正在使用client side validation gem用于客户端验证。
问题在于,由于表单位于第二个 .showcase-slide 上,因此当页面加载时它不存在于 DOM 中,并且客户端验证不起作用。
我需要一种方法来使用在客户端验证的 GitHub 页面上找到的 Hook ,以便在加载我的元素时激活客户端验证。
那么如何在我的表单上使用 $('form#user_new[data-validate]').validate();
钩子(Hook),该表单的 id 为 user_new
code>,并且不会立即加载,并且当您更改展示幻灯片时会从 DOM 中消失。
我尝试了几种 .live
和 .bind
变体,但显然我的 jQuery 非常弱,我没有运气。
请帮忙?
更新
我已经尝试过这个:
$("body").delegate("#user_username", 'focus', function(){
$('form#user_new[data-validate]').validate()});
但现在每次我单击 #user_username 字段时,另一个验证都会添加到堆栈中,并且我会在单个字段中显示多个错误(克隆)。
另一个更新和一个丑陋的解决方案
好吧,这就是我的想法,但它确实很难看。欢迎任何更好的解决方案!
$("body").delegate("#user_username", 'focus', function(){
if ($('form#user_new[data-validate]').data('events') === undefined ) {
$('form#user_new[data-validate]').validate()
}});
最佳答案
这可能有点不那么粗壮。
您需要向您关注的字段添加一个类(即“validateme”)。
$("body").delegate("#user_username.validateme", 'focus', function(){
$(this).closest('form').removeClass('validateme').validate();
});
这样,仅当焦点元素具有 validateme 类时才会添加验证。一旦获得焦点,类就会被删除,验证就会应用于表单。
关于jquery - Rails 中的客户端验证以及 jQuery slider 中的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6289583/