Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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_Jquery_Forms_Ruby On Rails 3.2_Client Side Validation - Fatal编程技术网

Javascript 带有客户端验证的自定义远程验证程序

Javascript 带有客户端验证的自定义远程验证程序,javascript,jquery,forms,ruby-on-rails-3.2,client-side-validation,Javascript,Jquery,Forms,Ruby On Rails 3.2,Client Side Validation,我正在尝试基于此使用客户端验证构建自定义远程验证程序。 到目前为止,我有: config/initializers/custom_validators.rb class JobsOverlapValidator < ActiveModel::EachValidator def validate_each(record, attr_name, value) #validation code end end # This allows us to assign the vali

我正在尝试基于此使用客户端验证构建自定义远程验证程序。 到目前为止,我有:

config/initializers/custom_validators.rb

class JobsOverlapValidator < ActiveModel::EachValidator
  def validate_each(record, attr_name, value)
   #validation code
  end
end

# This allows us to assign the validator in the model
module ActiveModel::Validations::HelperMethods
  def validates_jobs_overlap(*attr_names)
    validates_with JobsOverlapValidator, _merge_attributes(attr_names)
  end
end
app/assets/javascript/application.js

//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require jquery_nested_form
//= require application/rails.validations
//= require application/rails.validations.nested_form
//= require application/rails.validations.custom
...
我认为问题在于我的自定义验证不包含在客户端验证生成的脚本中:

//<![CDATA[
if(window.ClientSideValidations===undefined)window.ClientSideValidations={};window.ClientSideValidations.disabled_validators=[];window.ClientSideValidations.number_format={"separator":".","delimiter":","};if(window.ClientSideValidations.patterns===undefined)window.ClientSideValidations.patterns = {};window.ClientSideValidations.patterns.numericality=/^(-|\+)?(?:\d+|\d{1,3}(?:\,\d{3})+)(?:\.\d*)?$/;if(window.ClientSideValidations.remote_validators_prefix===undefined)window.ClientSideValidations.remote_validators_prefix='';if(window.ClientSideValidations.forms===undefined)window.ClientSideValidations.forms={};window.ClientSideValidations.forms['jobs_modal_form'] = {"type":"ActionView::Helpers::FormBuilder","input_tag":"<div class='control-group error'><span id=\"input_tag\" ></span><span class=\"help-inline\"></span></div>","label_tag":"<div class='control-group error'><label id=\"label_tag\" ></label><span class=\"help-inline\"></span></div>","validators":{"job[client_attributes][name]":{"presence":[{"message":"can't be blank"}],"length":[{"messages":{"maximum":"is too long (maximum is 50 characters)"},"maximum":50}]},"job[client_attributes][contact_name]":{"length":[{"messages":{"maximum":"is too long (maximum is 50 characters)"},"maximum":50}]},"job[client_attributes][contact_phone]":{"length":[{"messages":{"maximum":"is too long (maximum is 50 characters)"},"maximum":50}]},"job[client_attributes][contact_email]":{"format":[{"message":"is invalid","with":/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,"allow_blank":true}],"length":[{"messages":{"maximum":"is too long (maximum is 50 characters)"},"maximum":50}]},"job[client_attributes][address]":{"length":[{"messages":{"maximum":"is too long (maximum is 100 characters)"},"maximum":100}]},"job[description]":{"presence":[{"message":"can't be blank"}],"length":[{"messages":{"maximum":"is too long (maximum is 500 characters)"},"maximum":500}]}}};
//]]>
//
有没有人遇到过类似的问题?为什么客户端验证不以在客户端上创建其他验证的方式创建我的验证? 谢谢你的帮助,我被困在这个问题上,不知道如何继续:)

ClientSideValidations.validators.remote['jobs_overlap'] = function(element, options) {
  if ($.ajax({
    url: '/validators/jobs_overlap',
    data: { id: element.val() },
    // async *must* be false
    async: false
  }).status == 404) { return options.message; }
}
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require jquery_nested_form
//= require application/rails.validations
//= require application/rails.validations.nested_form
//= require application/rails.validations.custom
...
//<![CDATA[
if(window.ClientSideValidations===undefined)window.ClientSideValidations={};window.ClientSideValidations.disabled_validators=[];window.ClientSideValidations.number_format={"separator":".","delimiter":","};if(window.ClientSideValidations.patterns===undefined)window.ClientSideValidations.patterns = {};window.ClientSideValidations.patterns.numericality=/^(-|\+)?(?:\d+|\d{1,3}(?:\,\d{3})+)(?:\.\d*)?$/;if(window.ClientSideValidations.remote_validators_prefix===undefined)window.ClientSideValidations.remote_validators_prefix='';if(window.ClientSideValidations.forms===undefined)window.ClientSideValidations.forms={};window.ClientSideValidations.forms['jobs_modal_form'] = {"type":"ActionView::Helpers::FormBuilder","input_tag":"<div class='control-group error'><span id=\"input_tag\" ></span><span class=\"help-inline\"></span></div>","label_tag":"<div class='control-group error'><label id=\"label_tag\" ></label><span class=\"help-inline\"></span></div>","validators":{"job[client_attributes][name]":{"presence":[{"message":"can't be blank"}],"length":[{"messages":{"maximum":"is too long (maximum is 50 characters)"},"maximum":50}]},"job[client_attributes][contact_name]":{"length":[{"messages":{"maximum":"is too long (maximum is 50 characters)"},"maximum":50}]},"job[client_attributes][contact_phone]":{"length":[{"messages":{"maximum":"is too long (maximum is 50 characters)"},"maximum":50}]},"job[client_attributes][contact_email]":{"format":[{"message":"is invalid","with":/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,"allow_blank":true}],"length":[{"messages":{"maximum":"is too long (maximum is 50 characters)"},"maximum":50}]},"job[client_attributes][address]":{"length":[{"messages":{"maximum":"is too long (maximum is 100 characters)"},"maximum":100}]},"job[description]":{"presence":[{"message":"can't be blank"}],"length":[{"messages":{"maximum":"is too long (maximum is 500 characters)"},"maximum":500}]}}};
//]]>