- vừa được xem lúc

Use maxlength method jquery validate in ruby on rails

0 0 32

Người đăng: Nguyen Minh Chuc

Theo Viblo Asia

  • Khi làm việc với ruby on rails ngoài việc validate ở model, database thì validate trên view cũng rất cần thiết. Để có thể validate trên view thì chúng ta có thể sử dụng jquery validate.
  • Trong ruby chúng ta có thể sử dụng gem jquery-validation-rails, có thể xem thêm tại đây để biết cách cài đặt nhé. Jquery validate có rất nhiều method hữu dụng để validate trên view. Các bạn xem chi tiết tại đây. Trong bài viết này chúng ta chỉ nói về method maxlength.
  • Tạo model với validate như sau:
class Category < ApplicationRecord validates :name, presence: true, length: { maximum: 50 } validates :description, presence: true, length: { maximum: 50 }
end
  • Tạo file js xử lý validate:
 $("#new_category").validate({ debug: true, rules: { "category[name]": {maxlength: 50}, "category[description]": {maxlength: 50} }, messages: {}, onfocusout: function(element) { this.element(element); }, submitHandler: function(form) { form.submit(); } }); $.extend($.validator.messages, { maxlength: jQuery.validator.format("more than 50 characters") });
  • Khi chúng ta sử dụng maxlength mặc định của jquery validate, Khi nhập đủ 50 ký tự trong input thì jquery validate đang hiểu là sẽ cộng các ký tự user nhập và tính tổng vì vậy validate trên view đã passed. Tuy nhiên khi save vào db thì giá trị của field vừa nhập có chứa cả ký tự \r\n (đây là ký tự xuống dòng trên window), vì vậy khi save vào db sẽ bị failed validate vì trong model chúng ta đang validate 50 ký tự ( view 50 ký tự + ký tự \r\n).
Processing by Admin::CategoriesController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"pWQxT7zCO1vP2lc132XrZKapiuPJSvyUdyskLIDmqAxSQGPio4+akY481VCVA5awQQETJ1ukpriRSOMyPUvBTA==", "category"=>{"parent_id"=>"", "name"=>"chuc", "description"=>"Lorem ipsum is placeholder text commonly used in the graphic, print, and publishing \r\n\r\nindustries for previewing layouts and visual mockups."}, "commit"=>"Create", "locale"=>"en"} 
  • Để giải quyết được vấn để trên thì cần định nghĩa lại maxlength nhé.
$.validator.addMethod("maxlength", function (value, element, length) { value.replace(/[\r\n]+/gm, "").length <= length;
});
  • Hy vọng với bài chia sẻ này có thể giúp mọi người tránh được lỗi trên khi sử dụng maxlength method trong jquery validate.
  • Happy coding!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Custom selectbox jquery

Giới thiệu. Các bạn làm frontend chắc chắn đã gặp những design selectbox dạng dropdown khác với UI mặc định của trình duyệt. . Lý thuyết.

0 0 23

- vừa được xem lúc

Module Pattern trong Javascript

Việc giới hạn phạm vi ảnh hưởng và khả năng bị ảnh hưởng của các property và các biến và một việc cực kỳ quan trọng thế nhưng, Javascript lại không phải là một ngôn ngữ OOP và nó cũng không có cơ chế riêng cho phép chúng ta tạo ra các private property cho instance của các constructor function. Tuy n

0 0 31

- vừa được xem lúc

Một số tips trick với JQuery có thể bạn chưa biết hoặc biết rồi =))

Chắc hẵn ai làm việc với những ứng dụng web thì đều đã nghe qua thậm chú là làm việc với JQuey rất nhiều. jQuery là thư viện được viết từ JavaScript, jQuery giúp xây dựng các chức năng bằng Javascript

0 0 24

- vừa được xem lúc

Hướng dẫn về cách dùng hàm $.ajax() của JQuery

Mở đầu. Ajax đã nhanh chóng trở thành một phần quan trọng và phổ biến trong việc phát triển web và là một trong các mô hình thành công nhất từ trước đến giờ.

0 0 27

- vừa được xem lúc

Download all images trên website sử dụng javascript

1. Vấn đề. Chắc hẳn trong thực tế khi làm các dự án việc phát sinh tính năng tải ảnh là rất nhiều. <a href="/images/myw3schoolsimage.

0 0 31

- vừa được xem lúc

Tìm hiểu về Jquery Validation (Phần 1)

Sau đây, tôi sẽ giới thiệu với bạn về Jquery Validation - một Plugin mà tôi đang dùng trong dự án. Jquery Validation giúp cho việc validate ở clientside trở nên dễ dàng hơn, trong khi vẫn cung cấp nhi

0 0 18