autonumeric-rails 0.1.9.15 → 0.1.9.17
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.
data/README.md
CHANGED
@@ -1,6 +1,16 @@
|
|
1
|
-
#
|
1
|
+
# autonumeric-rails
|
2
2
|
|
3
|
-
|
3
|
+
Wrap up the excelent autoNumeric.js javascript library
|
4
|
+
|
5
|
+
autoNumeric is a jQuery plugin that automatically formats currency (money) and numbers as you type on form inputs.
|
6
|
+
It supports most International numeric formats and currency signs including those used in Europe, North and
|
7
|
+
South America, Asia and India (lakhs**).
|
8
|
+
|
9
|
+
autoNumeric.js github repository and documentation [https://github.com/BobKnothe/autoNumeric] (https://github.com/BobKnothe/autoNumeric)
|
10
|
+
|
11
|
+
autoNumeric.js home page and settings generator [http://www.decorplanit.com/plugin] (http://www.decorplanit.com/plugin)
|
12
|
+
|
13
|
+
The autonumeric-rails simply wrap up autoNumeric.js and in addition provides ujs flavor to autoNumeric.js
|
4
14
|
|
5
15
|
## Installation
|
6
16
|
|
@@ -12,14 +22,28 @@ And then execute:
|
|
12
22
|
|
13
23
|
$ bundle
|
14
24
|
|
15
|
-
|
25
|
+
Then add in your `javascript.js` manifest:
|
16
26
|
|
17
|
-
|
27
|
+
//= require jquery
|
28
|
+
//= require autonumeric
|
18
29
|
|
19
30
|
## Usage
|
20
31
|
|
21
|
-
|
32
|
+
Simply add `data-autonumeric` attribute to your HTML tag to initialize autoNumeric
|
33
|
+
with its default values:
|
34
|
+
|
35
|
+
<%= form_for @model do |f| %>
|
36
|
+
<%= f.text_field :field, data: {autonumeric: true} %>
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
You can also pass autoNumeric configuration parameters directly with a Hash in your HTML tag:
|
22
40
|
|
41
|
+
<%= form_for @model do |f| %>
|
42
|
+
<%= f.text_field :field, data: {autonumeric: {aSign: 'USD ', mDec: 0}} %>
|
43
|
+
<% end %>
|
44
|
+
|
45
|
+
See autoNumeric pages (links above) for all details on configuration and options
|
46
|
+
|
23
47
|
## Contributing
|
24
48
|
|
25
49
|
1. Fork it
|
@@ -2,7 +2,7 @@
|
|
2
2
|
* autoNumeric.js
|
3
3
|
* @author: Bob Knothe
|
4
4
|
* @author: Sokolov Yura aka funny_falcon
|
5
|
-
* @version: 1.9.
|
5
|
+
* @version: 1.9.17 - 2013-09-28 GMT 9:00 AM
|
6
6
|
*
|
7
7
|
* Created by Robert J. Knothe on 2010-10-25. Please report any bugs to https://github.com/BobKnothe/autoNumeric
|
8
8
|
* Created by Sokolov Yura on 2010-11-07
|
@@ -93,7 +93,6 @@
|
|
93
93
|
}
|
94
94
|
});
|
95
95
|
}
|
96
|
-
|
97
96
|
function convertKeyToNumber(settings, key) {
|
98
97
|
if (typeof (settings[key]) === 'string') {
|
99
98
|
settings[key] *= 1;
|
@@ -101,7 +100,7 @@
|
|
101
100
|
}
|
102
101
|
/**
|
103
102
|
* Preparing user defined options for further usage
|
104
|
-
* merge them with defaults
|
103
|
+
* merge them with defaults appropriately
|
105
104
|
*/
|
106
105
|
function autoCode($this, settings) {
|
107
106
|
runCallbacks($this, settings);
|
@@ -231,19 +230,20 @@
|
|
231
230
|
return s;
|
232
231
|
}
|
233
232
|
/**
|
234
|
-
* function to handle numbers less than 0 that are stored in Exponential
|
233
|
+
* function to handle numbers less than 0 that are stored in Exponential notation ex: .0000001 stored as 1e-7
|
235
234
|
*/
|
236
|
-
function checkValue(value) {
|
237
|
-
var decimal = value.indexOf('.')
|
235
|
+
function checkValue(value, settings) {
|
236
|
+
var decimal = value.indexOf('.'),
|
237
|
+
checkSmall = +value;
|
238
238
|
if (decimal !== -1) {
|
239
|
-
if (
|
239
|
+
if (checkSmall < 0.000001 && checkSmall > -1) {
|
240
240
|
value = +value;
|
241
241
|
if (value < 0.000001 && value > 0) {
|
242
|
-
value = (value +
|
242
|
+
value = (value + 10).toString();
|
243
243
|
value = value.substring(1);
|
244
244
|
}
|
245
245
|
if (value < 0 && value > -1) {
|
246
|
-
value = (value -
|
246
|
+
value = (value - 10).toString();
|
247
247
|
value = '-' + value.substring(2);
|
248
248
|
}
|
249
249
|
value = value.toString();
|
@@ -259,7 +259,7 @@
|
|
259
259
|
}
|
260
260
|
}
|
261
261
|
}
|
262
|
-
return value.replace(/^0*(\d)/, '$1');
|
262
|
+
return (settings.lZero === 'keep') ? value : value.replace(/^0*(\d)/, '$1');
|
263
263
|
}
|
264
264
|
/**
|
265
265
|
* prepare real number to be converted to our format
|
@@ -336,7 +336,7 @@
|
|
336
336
|
ivSplit[1] = ivSplit[1].substring(0, settings.mDec);
|
337
337
|
} /** joins the whole number with the deciaml value */
|
338
338
|
iv = s + settings.aDec + ivSplit[1];
|
339
|
-
} else { /** if whole
|
339
|
+
} else { /** if whole numbers only */
|
340
340
|
iv = s;
|
341
341
|
}
|
342
342
|
if (settings.aSign) {
|
@@ -355,8 +355,8 @@
|
|
355
355
|
/**
|
356
356
|
* round number after setting by pasting or $().autoNumericSet()
|
357
357
|
* private function for round the number
|
358
|
-
* please note this handled as text -
|
359
|
-
* also this offers multiple rounding
|
358
|
+
* please note this handled as text - JavaScript math function can return inaccurate values
|
359
|
+
* also this offers multiple rounding methods that are not easily accomplished in JavaScript
|
360
360
|
*/
|
361
361
|
function autoRound(iv, settings) { /** value to string */
|
362
362
|
iv = (iv === '') ? '0' : iv.toString();
|
@@ -427,7 +427,7 @@
|
|
427
427
|
} /** Reconstruct the string, converting any 10's to 0's */
|
428
428
|
ivArray = ivArray.slice(0, rLength + 1);
|
429
429
|
ivRounded = truncateZeros(ivArray.join('')); /** return rounded value */
|
430
|
-
return nSign + ivRounded;
|
430
|
+
return (+ivRounded === 0) ? ivRounded : nSign + ivRounded;
|
431
431
|
}
|
432
432
|
/**
|
433
433
|
* Holder object for field properties
|
@@ -447,7 +447,7 @@
|
|
447
447
|
this.ctrlKey = e.ctrlKey;
|
448
448
|
this.cmdKey = e.metaKey;
|
449
449
|
this.shiftKey = e.shiftKey;
|
450
|
-
this.selection = getElementSelection(this.that); /** keypress event overwrites
|
450
|
+
this.selection = getElementSelection(this.that); /** keypress event overwrites meaningful value of e.keyCode */
|
451
451
|
if (e.type === 'keydown' || e.type === 'keyup') {
|
452
452
|
this.kdCode = e.keyCode;
|
453
453
|
}
|
@@ -549,7 +549,7 @@
|
|
549
549
|
},
|
550
550
|
/**
|
551
551
|
* expands selection to cover whole sign
|
552
|
-
* prevents partial deletion/copying/
|
552
|
+
* prevents partial deletion/copying/overwriting of a sign
|
553
553
|
*/
|
554
554
|
expandSelectionOnSign: function (setReal) {
|
555
555
|
var sign_position = this.signPosition(),
|
@@ -673,7 +673,7 @@
|
|
673
673
|
cCode = String.fromCharCode(this.which),
|
674
674
|
parts = this.getBeforeAfterStriped(),
|
675
675
|
left = parts[0],
|
676
|
-
right = parts[1]; /** start rules when the decimal
|
676
|
+
right = parts[1]; /** start rules when the decimal character key is pressed */
|
677
677
|
/** always use numeric pad dot to insert decimal separator */
|
678
678
|
if (cCode === settingsClone.aDec || (settingsClone.altDec && cCode === settingsClone.altDec) || ((cCode === '.' || cCode === ',') && this.kdCode === 110)) { /** do not allow decimal character if no decimal part allowed */
|
679
679
|
if (!settingsClone.mDec || !settingsClone.aDec) {
|
@@ -698,7 +698,7 @@
|
|
698
698
|
if (cCode === '-' || cCode === '+') { /** prevent minus if not allowed */
|
699
699
|
if (!settingsClone.aNeg) {
|
700
700
|
return true;
|
701
|
-
} /**
|
701
|
+
} /** caret is always after minus */
|
702
702
|
if (left === '' && right.indexOf(settingsClone.aNeg) > -1) {
|
703
703
|
left = settingsClone.aNeg;
|
704
704
|
right = right.substring(1, right.length);
|
@@ -807,7 +807,7 @@
|
|
807
807
|
var $this = $(this),
|
808
808
|
settings = $this.data('autoNumeric'), /** attempt to grab 'autoNumeric' settings, if they don't exist returns "undefined". */
|
809
809
|
tagData = $this.data(); /** attempt to grab HTML5 data, if they don't exist we'll get "undefined".*/
|
810
|
-
if (typeof settings !== 'object') { /** If we
|
810
|
+
if (typeof settings !== 'object') { /** If we couldn't grab settings, create them from defaults and passed options. */
|
811
811
|
var defaults = {
|
812
812
|
/** allowed numeric values
|
813
813
|
* please do not modify
|
@@ -857,7 +857,7 @@
|
|
857
857
|
* value must be smaller than vMax
|
858
858
|
*/
|
859
859
|
vMin: '0.00',
|
860
|
-
/** max number of decimal places = used to
|
860
|
+
/** max number of decimal places = used to override decimal places set by the vMin & vMax values
|
861
861
|
* value must be enclosed in quotes example mDec: '3',
|
862
862
|
* This can also set the value via a call back function mDec: 'css:#
|
863
863
|
*/
|
@@ -869,7 +869,7 @@
|
|
869
869
|
* mRound: 'a', Round-Half-Down Asymmetric (lower case a)
|
870
870
|
* mRound: 'B', Round-Half-Even "Bankers Rounding"
|
871
871
|
* mRound: 'U', Round Up "Round-Away-From-Zero"
|
872
|
-
* mRound: 'D', Round Down "Round-Toward-Zero" - same as
|
872
|
+
* mRound: 'D', Round Down "Round-Toward-Zero" - same as truncate
|
873
873
|
* mRound: 'C', Round to Ceiling "Toward Positive Infinity"
|
874
874
|
* mRound: 'F', Round to Floor "Toward Negative Infinity"
|
875
875
|
*/
|
@@ -899,7 +899,7 @@
|
|
899
899
|
*/
|
900
900
|
lZero: 'allow',
|
901
901
|
/** determine if the default value will be formatted on page ready.
|
902
|
-
* true =
|
902
|
+
* true = automatically formats the default value on page ready
|
903
903
|
* false = will not format the default value
|
904
904
|
*/
|
905
905
|
aForm: true,
|
@@ -908,7 +908,7 @@
|
|
908
908
|
};
|
909
909
|
settings = $.extend({}, defaults, tagData, options); /** Merge defaults, tagData and options */
|
910
910
|
if (settings.aDec === settings.aSep) {
|
911
|
-
$.error("autoNumeric will not function properly when the decimal character aDec: '" + settings.aDec + "' and thousand
|
911
|
+
$.error("autoNumeric will not function properly when the decimal character aDec: '" + settings.aDec + "' and thousand separator aSep: '" + settings.aSep + "' are the same character");
|
912
912
|
return this;
|
913
913
|
}
|
914
914
|
$this.data('autoNumeric', settings); /** Save our new settings */
|
@@ -946,7 +946,7 @@
|
|
946
946
|
$this.on('keydown.autoNumeric', function (e) {
|
947
947
|
holder = getHolder($this);
|
948
948
|
if (holder.settings.aDec === holder.settings.aSep) {
|
949
|
-
$.error("autoNumeric will not function properly when the decimal character aDec: '" + holder.settings.aDec + "' and thousand
|
949
|
+
$.error("autoNumeric will not function properly when the decimal character aDec: '" + holder.settings.aDec + "' and thousand separator aSep: '" + holder.settings.aSep + "' are the same character");
|
950
950
|
return this;
|
951
951
|
}
|
952
952
|
if (holder.that.readOnly) {
|
@@ -991,7 +991,6 @@
|
|
991
991
|
return false;
|
992
992
|
}
|
993
993
|
holder.formatted = false;
|
994
|
-
|
995
994
|
});
|
996
995
|
$this.on('keyup.autoNumeric', function (e) {
|
997
996
|
var holder = getHolder($this);
|
@@ -1096,7 +1095,7 @@
|
|
1096
1095
|
settings = $.extend(settings, options);
|
1097
1096
|
getHolder($this, settings, true);
|
1098
1097
|
if (settings.aDec === settings.aSep) {
|
1099
|
-
$.error("autoNumeric will not function properly when the decimal character aDec: '" + settings.aDec + "' and thousand
|
1098
|
+
$.error("autoNumeric will not function properly when the decimal character aDec: '" + settings.aDec + "' and thousand separator aSep: '" + settings.aSep + "' are the same character");
|
1100
1099
|
return this;
|
1101
1100
|
}
|
1102
1101
|
$this.data('autoNumeric', settings);
|
@@ -1106,7 +1105,7 @@
|
|
1106
1105
|
return;
|
1107
1106
|
});
|
1108
1107
|
},
|
1109
|
-
/** returns a
|
1108
|
+
/** returns a formatted strings for "input:text" fields Uses jQuery's .val() method*/
|
1110
1109
|
set: function (valueIn) {
|
1111
1110
|
return $(this).each(function () {
|
1112
1111
|
var $this = autoGet($(this)),
|
@@ -1117,7 +1116,7 @@
|
|
1117
1116
|
$.error("You must initialize autoNumeric('init', {options}) prior to calling the 'set' method");
|
1118
1117
|
return this;
|
1119
1118
|
}
|
1120
|
-
/** allows locale decimal
|
1119
|
+
/** allows locale decimal separator to be a comma */
|
1121
1120
|
if (testValue === $this.attr('value')) {
|
1122
1121
|
value = value.replace(',', '.');
|
1123
1122
|
}
|
@@ -1129,7 +1128,7 @@
|
|
1129
1128
|
if (!$.isNumeric(+value)) {
|
1130
1129
|
return '';
|
1131
1130
|
}
|
1132
|
-
value = checkValue(value);
|
1131
|
+
value = checkValue(value, settings);
|
1133
1132
|
settings.oEvent = 'set';
|
1134
1133
|
settings.lastSetValue = value; /** saves the unrounded value from the set method - $('selector').data('autoNumeric').lastSetValue; - helpful when you need to change the rounding accuracy*/
|
1135
1134
|
value.toString();
|
@@ -1151,7 +1150,7 @@
|
|
1151
1150
|
return false;
|
1152
1151
|
});
|
1153
1152
|
},
|
1154
|
-
/** method to get the
|
1153
|
+
/** method to get the unformatted value from a specific input field, returns a numeric value */
|
1155
1154
|
get: function () {
|
1156
1155
|
var $this = autoGet($(this)),
|
1157
1156
|
settings = $this.data('autoNumeric');
|
@@ -1186,10 +1185,10 @@
|
|
1186
1185
|
if (settings.lZero === 'keep') {
|
1187
1186
|
return getValue;
|
1188
1187
|
}
|
1189
|
-
getValue = checkValue(getValue);
|
1188
|
+
getValue = checkValue(getValue, settings);
|
1190
1189
|
return getValue; /** returned Numeric String */
|
1191
1190
|
},
|
1192
|
-
/** method to get the
|
1191
|
+
/** method to get the unformatted value from multiple fields */
|
1193
1192
|
getString: function () {
|
1194
1193
|
var isAutoNumeric = false,
|
1195
1194
|
$this = autoGet($(this)),
|
@@ -1213,7 +1212,7 @@
|
|
1213
1212
|
$.error("You must initialize autoNumeric('init', {options}) prior to calling the 'getString' method");
|
1214
1213
|
return this;
|
1215
1214
|
},
|
1216
|
-
/** method to get the
|
1215
|
+
/** method to get the unformatted value from multiple fields */
|
1217
1216
|
getArray: function () {
|
1218
1217
|
var isAutoNumeric = false,
|
1219
1218
|
$this = autoGet($(this)),
|
@@ -1,2 +1,2 @@
|
|
1
|
-
//= require autoNumeric-1.9.
|
1
|
+
//= require autoNumeric-1.9.17.js
|
2
2
|
//= require autonumeric_ujs.js
|
@@ -36,18 +36,18 @@
|
|
36
36
|
jQuery(function() {
|
37
37
|
var auto_numeric_init, update_numeric_value;
|
38
38
|
update_numeric_value = function(input) {
|
39
|
-
|
39
|
+
input.next().val(input.autoNumeric('get'));
|
40
40
|
};
|
41
41
|
auto_numeric_init = function(input) {
|
42
42
|
var hidden;
|
43
43
|
hidden = $('<input>').attr('type', 'hidden').attr('id', input.attr('id') + '_val').attr('name', input.attr('name'));
|
44
44
|
hidden.insertAfter(input);
|
45
45
|
input.autoNumeric('init', $.parseJSON(input.attr('data-autonumeric')));
|
46
|
-
|
47
|
-
|
46
|
+
input.on('keyup', function() {
|
47
|
+
update_numeric_value(input);
|
48
48
|
});
|
49
49
|
};
|
50
|
-
|
51
|
-
|
50
|
+
$('input[data-autonumeric]').each(function() {
|
51
|
+
auto_numeric_init($(this));
|
52
52
|
});
|
53
53
|
});
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autonumeric-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.9.
|
4
|
+
version: 0.1.9.17
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-11-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: jquery-rails
|
@@ -77,7 +77,7 @@ files:
|
|
77
77
|
- lib/autonumeric/rails.rb
|
78
78
|
- lib/autonumeric/rails/engine.rb
|
79
79
|
- lib/autonumeric/rails/version.rb
|
80
|
-
- vendor/assets/javascripts/autoNumeric-1.9.
|
80
|
+
- vendor/assets/javascripts/autoNumeric-1.9.17.js
|
81
81
|
- vendor/assets/javascripts/autonumeric.js
|
82
82
|
- vendor/assets/javascripts/autonumeric_ujs.js
|
83
83
|
homepage: https://github.com/randoum/autonumeric-rails
|