jquery - Rails 中的客户端验证以及 jQuery slider 中的表单

标签 jquery ruby-on-rails validation client-side

我有一个网站,其中有一个基于 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/

相关文章:

.net - 了解DataAnnotations中的ValidationContext

c# - 如何使用一组不同值的比较验证器?

jquery - 滚动时移动图像

javascript - jQuery - 交叉淡入淡出效果

javascript - 在多个 div 中具有相同类的元素外部单击时如何隐藏特定的 div

ruby-on-rails - 利用厂妹创建HABTM协会

javascript - 我想验证验证js中的最大数量大于最小数量

javascript - 从 $get 方法切换到 $POST

ruby-on-rails - 为安装在 Rails 中的 sinatra 应用程序设计身份验证

ruby-on-rails - `autodetect' : No known ORM was detected