Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用客户端验证验证另一个字段中是否存在值_Javascript_Ruby On Rails_Forms_Validation_Client Side Validation - Fatal编程技术网

Javascript 使用客户端验证验证另一个字段中是否存在值

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

我使用的是一个非常有用的gem,除了条件验证(条件是另一个字段中存在一个值)之外,它对任何事情都非常有用

我有一个复选框字段(:has_dog),如果选中该字段,将导致文本字段(:dog_name)被验证。现在,这一切都很好,正如服务器端验证所预期的那样,但是在执行客户端验证时,它不会进行验证

对于其他字段,条件验证在客户端工作,比如说我硬编码为true或在服务器端执行其他操作,但是如果结果需要来自同一格式的字段,则条件验证不起作用

课程

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),第二个字段是否应被验证。