我现在用的是client_side_validations使用Rails 3.1.0宝石。 我一直在试图用它来验证是通过一个JavaScript小部件设置的隐藏字段。 从我已阅读宝石的GitHub的页面上,宝石故意不验证隐藏字段,因为用户不能纠正这些领域。 我曾经失败试图覆盖此行为。
有没有一种方法来覆盖这个行为对于特定的领域,而无需修改代码client_side_validations(除了当您安装宝石获取生成初始化的东西除外)?
我现在已经做了它的方式是通过做少许修改的宝石validateForm功能。 当它看起来的领域,以验证它只能抓住那些可见的元素:
form.find(':input:enabled:visible[data-validate]').each(function()
所以我改变了这个:
form.find(':input:enabled[data-validate]').each(function()
这似乎工作。 有没有更好的办法?
我一直没能当用户纠正自己的错误,重新验证隐藏字段。
@mushroom被问及client_side_validations 3.1版,但对于使用版本3.2.x中的人,这是目前配置。
这段代码在3.2-STABLE分支表明它是如何做。
您将需要重写window.ClientSideValidations.selectors.validate_inputs
和window.ClientSideValidations.selectors.inputs
一次加载页面。 至于包括散列中的隐藏元素的验证,我的建议是加载与元素可见的页面,并立即运行$('#id_of_hidden_element').attr('type', 'hidden')
或者,你可以使输入元素type='text'
,并使用opacity:0
在CSS样式表,使其不可见。 请注意,这有其他的副作用,如使其可获得焦点。
我认为,更好的办法是通过添加“身份证”或“类”验证它
<input type="hidden" id="validate_me">
然后选择应该是这样的:
':input:enabled:visible[data-validate], #validate_me'