Rails中的客户端验证以及jQuery滑块中的表单
我有一个网站,它有一个基于jQuery的滑块 在这些幻灯片中,我有一个新用户注册的Rails表单。我使用的是客户端验证 问题在于,由于表单位于第二张.showcase幻灯片上,因此当页面加载时,它在DOM中不存在,并且客户端验证不起作用 我需要一种方法来使用客户端验证的GitHub页面上的钩子,在加载元素时激活客户端验证 那么我如何使用hookRails中的客户端验证以及jQuery滑块中的表单,jquery,ruby-on-rails,validation,client-side,Jquery,Ruby On Rails,Validation,Client Side,我有一个网站,它有一个基于jQuery的滑块 在这些幻灯片中,我有一个新用户注册的Rails表单。我使用的是客户端验证 问题在于,由于表单位于第二张.showcase幻灯片上,因此当页面加载时,它在DOM中不存在,并且客户端验证不起作用 我需要一种方法来使用客户端验证的GitHub页面上的钩子,在加载元素时激活客户端验证 那么我如何使用hook$('form#user_new[data validate]')。validate(),其id为user\u new,不会立即加载,并且在更改showc
$('form#user_new[data validate]')。validate()我的表单上的code>,其id为user\u new
,不会立即加载,并且在更改showcase幻灯片时从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类时,才会添加验证。一旦它被聚焦,类就被移除,验证被应用到表单上。这可能会少一点粗块
不过,您需要在您关注的字段中添加一个类(即“validateme”)
$("body").delegate("#user_username.validateme", 'focus', function(){
$(this).closest('form').removeClass('validateme').validate();
});
这样,只有当被关注的元素具有validateme类时,才会添加验证。一旦它被关注,类就被删除,验证被应用到表单上。我使用的是rails 3.2.8、simpleForm 2.0.2、client_-side_-validations 3.2.0.beta.4和client_-side_-validations-simple_-form 2.0.0.beta.1以及上面的解决方案,但是解决方案是不完整的,因为当验证失败时(更改tab和back)如果多次触发同一字段的同一格式错误,则字符串错误将重复、三倍,以此类推
因此,对于这个特定字段,您必须在js.coffee文件中添加一个“span橡皮擦”,因为客户端验证每次都会添加一个span,而您只希望看到最后一个span
完整的解决方案是(将代码放入*.js.coffee文件中):
这是一个示例;如果您的案例不同,请检查生成的HTML并使用选择器。我使用的是rails 3.2.8、simpleForm 2.0.2、client_-side_-validations 3.2.0.beta.4和client_-side_-validations-simple_-form 2.0.beta.1以及上面的解决方案,但解决方案不完整,因为当验证失败时(更改tab和back)如果多次触发同一字段的同一格式错误,则字符串错误将重复、三倍,以此类推
因此,对于这个特定字段,您必须在js.coffee文件中添加一个“span橡皮擦”,因为客户端验证每次都会添加一个span,而您只希望看到最后一个span
完整的解决方案是(将代码放入*.js.coffee文件中):
这是一个例子;如果您的情况不同,请检查生成的HTML并使用选择器。Fer这里再次提到,我忘了告诉您我的错误是使用Pjax的,但是在这种情况下,当您有多个表单使用客户端验证并切换它们(在选项卡、jquery容器等中)时,就会出现错误是一样的。对于links:remote=>true是一样的,但更容易使用“.live”和listo!!!link在这里会工作得更好,我忘了告诉我我的错误是使用Pjax的,但是在这种情况下,当您有几个表单使用客户端验证并切换它们时,就会出现错误(在选项卡、jquery容器等中)相同。对于链接:remote=>true是相同的,但更易于使用“.live”和listo!!!链接将很好地工作