我有一个管理员为其客户部分预填充的表单。
当客户登录时,他们需要填写某些字段。 Client_side_validations会自动以红色突出显示空白字段,并解释这些字段(“不能为空”)。
这通常是所需的行为,因为模型已部分填写,但在这种情况下,我不希望client_side_validations触发,直到用户从相关字段进行了进/出聚焦,或者尝试了保存不完整的表格。如何在页面加载时确保client_side_validations不会消失?
答案 0 :(得分:1)
我认为您需要更改应用程序的体系结构,您可以根据操作进行复杂的验证以触发,但这将是一个混乱,您最好开始使用表单对象,因此您拥有模型和其他类,形成具有自己的验证的特定对象。
https://robots.thoughtbot.com/activemodel-form-objects
此外,您可以使用mixin模块在需要时将执行时间中的验证合并,而不是在模型中对它们进行硬编码。
答案 1 :(得分:1)
您可以在页面加载时通过javascript(例如使用document.ready)关闭客户端验证,并在焦点输入/输出时重新启用它们
$(form).disableClientSideValidations();
并启用:
$(form).enableClientSideValidations();
您也可以在单独的输入字段上调用disableClientSideValidations
和enableClientSideValidations
,而不是整个表单