Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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 使用remote:true时,仅需要使用jquery表单验证程序rails_Javascript_Jquery_Ruby On Rails_Ruby_Ajax - Fatal编程技术网

Javascript 使用remote:true时,仅需要使用jquery表单验证程序rails

Javascript 使用remote:true时,仅需要使用jquery表单验证程序rails,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,因此,我最近实现了一个电话/sim卡检查器。第一个表单输入要求用户输入他们的电话号码。如果数据库中存在电话号码,则呈现“找到电话号码”消息,否则将“电话号码”表单替换为“sim卡号码”表单。同样,如果数据库中存在sim号码,则呈现sim号码已找到消息,否则呈现sim号码未找到消息 我目前遇到的问题是,我添加了gem:jquery表单验证程序rails(),并对其进行了适当的设置。按照关于如何验证字段的文档,如果没有输入任何内容,我可以获得显示消息的表单。但是,当我尝试验证它的最小长度时,它不起作

因此,我最近实现了一个电话/sim卡检查器。第一个表单输入要求用户输入他们的电话号码。如果数据库中存在电话号码,则呈现“找到电话号码”消息,否则将“电话号码”表单替换为“sim卡号码”表单。同样,如果数据库中存在sim号码,则呈现sim号码已找到消息,否则呈现sim号码未找到消息

我目前遇到的问题是,我添加了gem:jquery表单验证程序rails(),并对其进行了适当的设置。按照关于如何验证字段的文档,如果没有输入任何内容,我可以获得显示消息的表单。但是,当我尝试验证它的最小长度时,它不起作用,它响应控制器方法,而不是检查验证。 此外,验证在sim卡号码表单app/views/phones/_sim.html.erb上甚至不起作用

<div id="sim-number-found"></div>
<div id="sim-number-not-found"></div>
<div id="error"></div>
<%= form_for :sim, :url => url_for(:action => 'checksim', :controller => 'phones'), remote: true, html: { id: 'sim-number-form'}  do |f| %>
  <%= f.label "Sim Number:" %>
  <%= f.number_field(:sim_number, class: "field", data: {
    :validation => "required validate_max_length length12",
    "validation-error-msg" => "This field is required, must only be numbers and be a minimum length of 12 characters"
    }) %>
  <%= submit_tag("Check") %>
<% end %>
实现代码如下: app/models/phone.rb

class Phone < ActiveRecord::Base
  validates :phone_number, length: {minimum: 11, maximum: 11}, allow_blank: false
  validates :sim_number, length: {minimum: 12, maximum: 12}, allow_blank: false
end
app/views/phones/phone-not-found.js.erb

$('#phone-number-found').html('Phone Number Found!');
$('#phone-number-not-found').html('');
$('#error').html('');
$('#phone-number-form').hide();
$('#phone-number-found').append("<%= j render(partial: 'sim') %>")
$('#phone-number-not-found').html('Phone Number Not Found!');
$('#error').html('');
$('#phone-number-form').hide();
$('#phone-number-found').html('Sim Found')
$('#phone-number-not-found').html('');
$('#phone-number-error').html('');
$('#phone-number-found').html('');
$('#phone-number-not-found').html('Sim Number Not Found!');
$('#error').html('');
app/views/phones/sim-not-found.js.erb

$('#phone-number-found').html('Phone Number Found!');
$('#phone-number-not-found').html('');
$('#error').html('');
$('#phone-number-form').hide();
$('#phone-number-found').append("<%= j render(partial: 'sim') %>")
$('#phone-number-not-found').html('Phone Number Not Found!');
$('#error').html('');
$('#phone-number-form').hide();
$('#phone-number-found').html('Sim Found')
$('#phone-number-not-found').html('');
$('#phone-number-error').html('');
$('#phone-number-found').html('');
$('#phone-number-not-found').html('Sim Number Not Found!');
$('#error').html('');
app/views/phones/error.js.erb

$('#phone-number-found').html('');
$('#phone-number-not-found').html('');
$('#error').html('Error!');

如果有人能解决我的问题,我将不胜感激。谢谢

请提供MCVE并说明您的问题。仅当字段为空时,我的电话号码表才会验证。如果输入的字符超过11个,则不会验证并显示验证消息。该表单跳过该选项,并根据数据库中是否存在该值呈现phone-found.js.erb或phone-not-found.js.erb。我的问题是:我如何让它验证最小和最大长度?您是否尝试使用该插件在视图中验证手机的长度?还是用铁轨?。如果您试图使用插件执行此操作,则您的html元素中缺少
maxlength
属性,我不知道您是否正在执行
$.validate()
。另一方面,如果您试图验证轨道一侧的长度,那么您就做错了;您现在所做的只是检查电话号码是否存在,您从未运行rails验证器,这些验证器在您创建新实例时运行(或者如果您运行。
valid?
),而不是在获取现有实例时运行。