validaciones en tiempo реальные en направляющие

Диаметры Буэнос-Айреса, Комо podria realizar la validación de un text_field en tiempo реальный обманный js en rails? Tengo mis проверяет en ми modelo, перспектива y las validaciones y de ошибки por бразильская саванна se realizan на месте продажи отправляют, pero Комо lo hago para que me допустимый en Эль-Кампо mismo подросток греха, que mandar отправляет ставки. Saludos [actualizado] Он probado подставляют la судью драгоценного камня, pero не меня funciona, dejo el codigo:

#views/employees/new.html.erb

      

Registro de Empleado

<%= render 'form', employee: @employee %>
#views/employees/_form.html.erb <%= form_for(employee, :builder => Judge::FormBuilder) do |f| %>
">

<%= f.label :legajo, "Legajo" %>

<%= f.text_field :legajo, :validate => true, autofocus: true,requiered:true, :class=>"form-control input-sm " ,placeholder: "Legajo" %> <%if @employee.errors[:legajo].any? %>

<%= @employee.errors[:legajo].to_s[/\w([^"]*)/] %>

<% end %>
<% end %> #models/employee class Employee < ApplicationRecord validates :legajo, :name, :last_name,:document_number, presence: { message: "Campo obligatorio" } validates :legajo, uniqueness: { message: " El legajo ya existe" }, on: :create validates :legajo, numericality: { message: " Se permite solo numeros enteros",only_integer: true } validates :legajo, length: { is: 5, :message => "Debe tener 5 digitos" } validates :legajo, uniqueness: { message: " El legajo ya existe" }, on: :update end #assets/javascript/application.js //= require underscore //= require json2 //= require judge ... #config/routes Rails.application.routes.draw do mount Judge::Engine => '/judge' ... end

error que aparece p el usuario al querer guardar los datos

1
задан 10.11.2016, 15:24
3 ответа

Я рекомендую тебе бросать беглый взгляд в драгоценные камни judge или client_side_validations

Я использовал первую и функционирует достаточно добра.

Например для типичной модели Пользователь

 # usuario.rb
 class Usuario
   validates :nombre, presence => true
   validates :apellidos, presence => true
 end

Построив формуляры создания этой формы

form_for(@usuario, :builder => Judge::FormBuilder) do |f|
  f.text_field :nombre, :validate => true
  f.text_field :apellidos, :validate => true
end

тебя производит формуляр, похожий на это

<form method="POST" action="/usuarios" id="new_usuario">
  <input type="text" data-klass="Usuario" data-validate="[{'kind':'presence','options':{},'messages':{'blank':'Nombre no puede estar vacío'}}]" id="usuario_nombre">
  <input type="text" data-klass="Usuario" data-validate="[{'kind':'presence','options':{},'messages':{'blank':'Apellidos no puede estar vacío'}}]" name="usuario[apellidos]" id="usuario_apellidos">
</form>

Многие другие детали и функциональность в Вебе judge


UPDATE Если ты хочешь, чтобы он санкционировал тебе поля перед тем, как делать submit, ты можешь добавлять, например, класс ко всем полям, которые ты хочешь санкционировать. Я назвал ее "validation" и потом использую функцию санкционируй тебя, что он предоставляет драгоценный камень judge

form_for(@usuario, :builder => Judge::FormBuilder) do |f|
  f.text_field :nombre, class: "validation", :validate => true
  f.text_field :apellidos, class: "validation", :validate => true
end

$(function() {
 $('.validation').on('input select', function() {
    judge.validate($(this)[0], {
        valid: function(element) {
                eliminaMensajeError(element);
        },
        invalid: function(element, messages) {
            muestraMensajeError (element, messages);
        }
    });
 });
});

Методы eliminaMensajeError и muestraMensajeError они собственные и то, что они делают, состоит в том, чтобы выделять поле в красном в ошибке и оставлять их в зелени, когда они ok

0
ответ дан 24.11.2019, 12:44
  • 1
    Спасибо за responde. Я тестирую вышеупомянутый драгоценный камень, но он не реализует validaci и # 243; n во время tipear в поле, или я делаю что-то плохим? –  sandovalgus 09.11.2016, 14:55
  • 2
    Если ты можешь, сделай update вопроса включая все, что ты смог тебя c и # 243; я говорю и мы бросаем глаз. –  Marino 09.11.2016, 22:29
  • 3
    Хороший день, там обновите с кодом. привет. –  sandovalgus 10.11.2016, 15:25
  • 4
    sandovalgus существую añ adido то, что делаю я, чтобы санкционировать перед submit –  Marino 10.11.2016, 22:30
  • 5
    я функционирую чуда, последней консультации, как ты решил тему uniqueness, продолжать инструкции, как он говорит documentació n, но оно я не функционирует. он следует за мной бросая " not allowed" с остальными утверждениями функционируй хорошо. привет –  sandovalgus 11.11.2016, 16:45

Я надеюсь, что это подает тебя. Главным образом назови функцию каждый раз, когда "освобождается" клавиша. А именно, после каждого вошедшего характера.

Этот код ты можешь помещать это в app/assets/javascripts/application.js, но было бы лучше, чтобы ты сделал файл в этой же самой папке, например: app/assets/javascripts/validacion.js.

Заметь: Понимая, что ты используешь драгоценный камень Turbolinks (turbolinks он приходит в автоматическом включенная в каждый новый проект rails кроме того, что ты это создашь с флагом --api) В Rails 4 обычно мы использовали 'page:load', но начиная с Rails 5 (Turbolinks v5) общо использовать 'turbolinks:load' после того, как инициализировались с твоим js. Ты можешь находить больше деталей на этом в официальной документации turbolinks.

$(document).on('turbolinks:load', function() {

  // en lugar de '.input' será la clase o id que identifique 
  // al campo que quieres validar
  $('.input').on('keyup', function() {
    setTimeout(function() {

      // ejemplo de un Regex para validar el formato de un email
      var emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

      if(emailRegex.test($('.input').val()) == true) {
        // lo que quieras que suceda si pasa la validación
      }
      else {
        // lo que quieras que suceda si NO pasa la validación
      }

    })
  })
})
1
ответ дан 24.11.2019, 12:44
  • 1
    Ты можешь использовать rubular.com , чтобы создавать / санкционировать твои regex (регулировать expression) –  Horacio 04.11.2016, 17:51
  • 2
    turbolinks:load он не зависит от, если est и # 225; используя rails 4 или 5, а, если est и # 225; используя или нет драгоценный камень turbolinks –  Alter Lagos 05.11.2016, 15:28
  • 3
    Как turbolinks est и # 225; в драгоценных камнях, которые Rails включает из-за default, я принимаю, что, если он использует ее, и полностью договора, в котором, если прощение долга кредитором проекта не делает больший лишенный especificaci и # 243; n, однако, начиная с rails 5 имена событий изменили , и схвати и # 237; как когда во многих случаях utiliz и # 225; bamos page:change сейчас мы используем turbolinks:load во многих из них. Спасибо за комментарий и добавлять и # 233; эти замечания, чтобы улучшать ответ. Привет. –  Horacio 05.11.2016, 22:33
  • 4
    В зависимости от твоей необходимости, и поскольку сложных ты хочешь, чтобы это были утверждения, вместо того, чтобы это подтверждать в javascript, podr и # 237; схвати делать petici и # 243; n AJAX в сервер, делать утверждения all и # 237; и давать ответ .js Схвати и # 237; podr и # 237; схвати повторно использовать утверждения, которые у тебя есть в модели и не tendr и # 237; эксперт, который должен считать их дублированными. –  hcarreras 06.11.2016, 13:19
  • 5
    таким образом, что suger и # 237; s, как podr и # 237; чтобы санкционировать, что число документа (например) было и #250; nico (не вводить информацию в компьютер повторенные). привет –  sandovalgus 09.11.2016, 14:57

Завись от твоей необходимости, у тебя есть разнообразные выборы.
самое легкое для того, чтобы быть осуществленным - используя validation api html5 , хотя aГєn она не вынесена совсем какими-то настоящими браузерами. TambiГ©n существуют некоторые librerГ-схвати js, что могут помогать тебе санкционировать твои формуляры, как ParsleyJS или validate.js

0
ответ дан 24.11.2019, 12:44