rapscallion 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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