Javascript 使用客户端验证验证另一个字段中是否存在值
我使用的是一个非常有用的gem,除了条件验证(条件是另一个字段中存在一个值)之外,它对任何事情都非常有用 我有一个复选框字段(:has_dog),如果选中该字段,将导致文本字段(:dog_name)被验证。现在,这一切都很好,正如服务器端验证所预期的那样,但是在执行客户端验证时,它不会进行验证 对于其他字段,条件验证在客户端工作,比如说我硬编码为true或在服务器端执行其他操作,但是如果结果需要来自同一格式的字段,则条件验证不起作用 课程Javascript 使用客户端验证验证另一个字段中是否存在值,javascript,ruby-on-rails,forms,validation,client-side-validation,Javascript,Ruby On Rails,Forms,Validation,Client Side Validation,我使用的是一个非常有用的gem,除了条件验证(条件是另一个字段中存在一个值)之外,它对任何事情都非常有用 我有一个复选框字段(:has_dog),如果选中该字段,将导致文本字段(:dog_name)被验证。现在,这一切都很好,正如服务器端验证所预期的那样,但是在执行客户端验证时,它不会进行验证 对于其他字段,条件验证在客户端工作,比如说我硬编码为true或在服务器端执行其他操作,但是如果结果需要来自同一格式的字段,则条件验证不起作用 课程 class PetCare < ActiveRec
class PetCare < ActiveRecord::Base
validates :dog_name, presence: true, if: :has_dog?
end
classpetcare
表格
<%= form_for @pet_care, validate: true do |f| %>
<%= f.label :has_dog %>
<%= f.check_box :has_dog %>
<br />
<%= f.label :dog_name %>
<%= f.text_field :dog_name, validate: true %>
<% end %>
因此,即使“has_dog”为真,客户端的“dog_name”也不会得到验证。(尽管它在服务器端工作)。我尝试了名称、表单类型等的各种组合。它只是没有看到“has_dog”的值。我几乎要为此编写一个自定义验证器了,但对于一件非常简单的事情来说,这似乎太过分了。还有其他人有这样的解决方案吗?我希望这会有所帮助。
当我更新用户模型时,我没有以这种方式发送密码
#app/models/user.rb
class User < ActiveRecord::Base
attr_accessor :updating_password
def should_validate_password?
updating_password || new_record?
end
end
#app/models/user.rb
类用户
现在在控制器上
#app/controllers/users/users_controller.rb
class Users::UsersController < UserController
before_filter :check_password_submitted, :only => :update
private
def check_password_submitted
if params[:user][:password].blank?
params[:user].delete("password")
params[:user].delete("password_confirmation")
user.updating_password = false
else
user.updating_password = true
end
end
end
#app/controllers/users/users_controller.rb
类用户::UsersController:update
私有的
def检查\u密码\u已提交
如果参数[:用户][:密码]。为空?
参数[:用户]。删除(“密码”)
参数[:用户]。删除(“密码确认”)
user.updateing_password=false
其他的
user.updateing_password=true
结束
结束
结束
我知道这不会发生在前端,但它可能会给你一个提示,告诉你该怎么做
Happy Codding非常感谢您的回复,我想我的错误是我使用的示例是密码。我将更新我的帖子,以反映这不是关于密码,而是基于验证的条件验证在客户端工作的机制,就像我在服务器端工作一样。关键在于,根据一个字段的值(本例为true或false),第二个字段是否应被验证。