我在Rails 3.1.0中使用client_side_validations gem。我一直在尝试使用它来验证通过javascript小部件设置的隐藏字段。根据我在gem的github页面上读到的内容,gem故意不会验证隐藏字段,因为用户无法更正这些字段。我没有成功尝试覆盖此行为。
有没有办法在不修改client_side_validations代码的情况下覆盖特定字段的此行为(除了安装gem时生成的init内容)?。
我现在的方法是对gem中的validateForm函数稍作修改。当它查找要验证的字段时,它只会抓取可见的元素:
form.find(':input:enabled:visible[data-validate]').each(function()
所以我改变了这个:
form.find(':input:enabled[data-validate]').each(function()
这似乎有效。还有更好的方法吗?
当用户纠正错误时,我无法重新验证隐藏字段。
答案 0 :(得分:5)
如果要验证隐藏字段是如何做的
答案 1 :(得分:1)
@mushroom询问了client_side_validations版本3.1,但对于使用版本3.2.x的任何人来说,现在都可以配置。
3.2-stable分支上的This code显示了它是如何完成的。
页面加载后,您需要覆盖window.ClientSideValidations.selectors.validate_inputs
和window.ClientSideValidations.selectors.inputs
。至于在哈希中包含隐藏元素的验证,我的建议是加载包含元素可见的页面,并立即运行$('#id_of_hidden_element').attr('type', 'hidden')
。
或者,您可以在CSS样式表中创建输入元素type='text'
并使用opacity:0
使其不可见。请注意,这有其他副作用,例如使其可聚焦。
答案 2 :(得分:0)
我认为更好的方法是通过添加' id'来验证它。或者' class'
<input type="hidden" id="validate_me">
然后选择器应该是这样的:
':input:enabled:visible[data-validate], #validate_me'