rapscallion 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e4faa2b9c0fb094df19be7f5660885e1f3df7333
4
- data.tar.gz: f8ea9dddf622c0e2b376a4d1d4d75723d262eaca
3
+ metadata.gz: d1eb9596f7264fe5da4e2fcd9e84bdbdaba00d03
4
+ data.tar.gz: 9e4a2f9cfdf540669207c7744e78a3620740da4b
5
5
  SHA512:
6
- metadata.gz: bd52ff49f1bfcbd024308a1e41b26d67c46bf2086f984b6f12a8dc356f3308e9e1e03a3f96012c45caf2d5ffeb8c5a1e60345293e20b285414f4fb69d373866e
7
- data.tar.gz: f6d393b835ac74b6bba5d01a99ab8c62c0ce9a7e58d5f526098340ccd532c52971ce6ab0e4ba163c8122ab42e6d80a3f98b058c922432b470a4c7c9589753ca9
6
+ metadata.gz: 34efc3abee76681704f75a43d0a60878a6915cde9782dbf8ef119263a492373f43084e5f623fbd0ee6e764fa548bafdb1377a1f8bc7c13d0c8767345d03ed302
7
+ data.tar.gz: 6e3688cddf645cd664d1ba688baf67edc067bdef7b1b5a81b99040723c22399a049e22102fcba0afa57ac12da88985e6a34f690f418b1fd7b58a06bdb3581039
data/README.md CHANGED
@@ -1,34 +1,56 @@
1
- rapscallion
1
+ Rapscallion
2
2
  ===========
3
3
 
4
4
  Ruby on Rails client side validations
5
5
 
6
- application.js:
6
+ ### Add Rapscallion to application.js:
7
7
 
8
8
  ``` javascript
9
9
  //= require rapscallion/validations
10
10
  ```
11
11
 
12
- Gemfile:
12
+ ### Activate in Javascript:
13
+ $(selector).rapscallion();
14
+
15
+ #### Options:
16
+
17
+ - **Change class of error message div**
18
+ error_message_container_class: "error_messages"
19
+
20
+ - **Set a class on field with error**
21
+ field_with_error_class: 'has_error'
22
+
23
+ - **Set a class on field with success**
24
+ field_valid_class: 'is_valid'
25
+
26
+ - **Container for input – used to add and remove error messages**
27
+ field_container: 'div.input'
28
+
29
+ - **Event that triggers validation**
30
+ trigger: 'blur'
31
+
32
+ eg $('.rapscallion').rapscallion({error_message_container_class: 'errors', field_container: '.field'})
33
+
34
+ ### Add Rapscallion to Gemfile:
13
35
 
14
36
  ``` ruby
15
37
  gem 'rapscallion'
16
38
  ```
17
39
 
18
- View example with Simple Form:
40
+ ### View example of input tag with Simple Form:
19
41
 
20
42
  ``` haml
21
43
  .input
22
44
  = f.input :username, input_html: {class: 'rapscallion'}
23
45
  ```
24
46
 
25
- When validating an existing record (for example to avoid uniqueness validation problems):
47
+ ### Form tag when validating an existing record (for example to avoid uniqueness validation problems):
26
48
 
27
49
  ``` haml
28
50
  = simple_form_for @thing, html: {data: {existing_record: @thing.id}} do |f|
29
51
  ```
30
52
 
31
- Model:
53
+ ### Model:
32
54
 
33
55
  ``` ruby
34
56
  class User < ActiveRecord::Base
@@ -1,83 +1,110 @@
1
- $(document).on('blur', '.rapscallion', function(){
2
-
3
- var settings = {
4
-
5
- /* error messages will be shown in a div set the class for that here */
6
- error_message_container_class: "error_messages",
7
-
8
- /* fields with errors will get a class to indicate errors, change that class name here */
9
- field_with_error_class: 'has_error',
1
+ /*
10
2
 
11
- /* valid fields will get a class to indicate success, change that class name here */
12
- field_valid_class: 'is_valid',
13
-
14
- /* error messages will be remove from input container, eg closest(:selector), set that here */
15
- field_container: 'div.input'
3
+ Rapscallion
4
+ Ruby on Rails Client Side Validations
5
+ Author: Gordon B. Isnor
6
+ http://www.github.com/gordonbisnor/rapscallion
7
+ http://blog.isnorcreative.com/2014/06/10/rapscallion.html
16
8
 
17
- };
18
-
19
- /* the input in question */
20
- var el = $(this);
21
-
22
- /* the form */
23
- var form = el.closest('form');
24
-
25
- /* model reference from field name eg user from user[username] */
26
- var klass = el.prop('name').replace(/\[.*\]/,'');
27
-
28
- /* field name eg username from user[username] */
29
- var attr = el.prop('id').replace(klass+"_",'');
30
-
31
- /* field value */
32
- var field_val = el.val();
33
-
34
- /* set up basic hash for validation */
35
- validation_data = {klass: klass, attr: attr, field_val: field_val}
36
-
37
- /*
38
- confirmation fields are special cases, and add the field to confirm for
39
- eg password and password_confirmation
40
- */
41
- if(attr.match(/.*_confirmation/) != undefined){
42
- var confirmation_field = attr.replace('_confirmation','');
43
- var confirmation_value = form.find('#' + klass + "_" + confirmation_field).val();
44
- };
45
-
46
- validation_data[confirmation_field] = confirmation_value;
9
+ */
47
10
 
48
- /* existing record? */
49
- if(form.data('existing-record') != undefined) {
50
- validation_data['existing_record'] = form.data('existing-record');
51
- };
11
+ (function($){
52
12
 
53
- /* do ajax request */
54
- $.ajax({
55
- type: "POST",
56
- url: '/rapscallion',
57
- dataType: 'json',
58
- data: validation_data,
13
+ $.fn.rapscallion = function(options){
59
14
 
60
- success: function(data, status, xhr) {
15
+ var settings = $.extend({
16
+
17
+ /* error messages will be shown in a div set the class for that here */
18
+ error_message_container_class: "error_messages",
19
+
20
+ /* fields with errors will get a class to indicate errors, change that class name here */
21
+ field_with_error_class: 'has_error',
22
+
23
+ /* valid fields will get a class to indicate success, change that class name here */
24
+ field_valid_class: 'is_valid',
61
25
 
62
- /* remove existing error messages */
63
- el.closest(settings.field_container).find('.'+settings.error_message_container_class).remove();
64
-
65
- /* if no errors present field is valid, add is_valid css class */
66
- if(data.length == 0) {
67
- el.removeClass(settings.field_with_error_class).addClass(settings.field_valid_class);
68
-
69
- /* if error present field is not valid, add has_error class to input, and error messages after input */
26
+ /* error messages will be remove from input container, eg closest(:selector), set that here */
27
+ field_container: 'div.input',
28
+
29
+ /* event that triggers validation */
30
+ trigger: 'blur'
31
+
32
+ }, options);
33
+
34
+ return this.each(function() {
70
35
 
71
- } else {
72
- /* cycle through json response adding errors for each */
73
- $.each( data, function( key, val ) {
74
- el.after('<div class="' + settings.error_message_container_class + '">' + val + '</div>');
75
- el.removeClass(settings.field_valid_class).addClass(settings.field_with_error_class)
76
- });
77
- }; /* end if errors or not */
36
+ $(this).on(settings.trigger, function(){
78
37
 
79
- } /* end success */
38
+ /* the input in question */
39
+ var el = $(this);
40
+
41
+ /* the form */
42
+ var form = el.closest('form');
43
+
44
+ /* model reference from field name eg user from user[username] */
45
+ var klass = el.prop('name').replace(/\[.*\]/,'');
46
+
47
+ /* field name eg username from user[username] */
48
+ var attr = el.prop('id').replace(klass+"_",'');
49
+
50
+ /* field value */
51
+ var field_val = el.val();
52
+
53
+ /* set up basic hash for validation */
54
+ validation_data = {klass: klass, attr: attr, field_val: field_val}
80
55
 
81
- }); /* end ajax */
56
+ /*
57
+ confirmation fields are special cases, and add the field to confirm for
58
+ eg password and password_confirmation
59
+ */
60
+ if(attr.match(/.*_confirmation/) != undefined){
61
+ var confirmation_field = attr.replace('_confirmation','');
62
+ var confirmation_value = form.find('#' + klass + "_" + confirmation_field).val();
63
+ };
82
64
 
83
- }); /* end on blur */
65
+ validation_data[confirmation_field] = confirmation_value;
66
+
67
+ /* existing record? */
68
+ if(form.data('existing-record') != undefined) {
69
+ validation_data['existing_record'] = form.data('existing-record');
70
+ };
71
+
72
+ /* do ajax request */
73
+ $.ajax({
74
+ type: "POST",
75
+ url: '/rapscallion',
76
+ dataType: 'json',
77
+ data: validation_data,
78
+
79
+ success: function(data, status, xhr) {
80
+
81
+ /* remove existing error messages */
82
+ el.closest(settings.field_container).find('.'+settings.error_message_container_class).remove();
83
+
84
+ /* if no errors present field is valid, add is_valid css class */
85
+ if(data.length == 0) {
86
+ el.removeClass(settings.field_with_error_class).addClass(settings.field_valid_class);
87
+
88
+ /* if error present field is not valid, add has_error class to input, and error messages after input */
89
+
90
+ } else {
91
+ /* cycle through json response adding errors for each */
92
+ $.each( data, function( key, val ) {
93
+ el.after('<div class="' + settings.error_message_container_class + '">' + val + '</div>');
94
+ el.removeClass(settings.field_valid_class).addClass(settings.field_with_error_class)
95
+ });
96
+ }; /* end if errors or not */
97
+
98
+ } /* end success */
99
+
100
+ }); /* end ajax */
101
+
102
+
103
+ });
104
+
105
+
106
+ });
107
+
108
+
109
+ };
110
+ }(jQuery));
@@ -1,3 +1,3 @@
1
1
  module Rapscallion
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rapscallion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gordon Isnor