parsley-rails 1.2.2.0 → 1.2.3.0
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b803efc7682990aa6b68daddd2f09ab30fe13f1c
|
4
|
+
data.tar.gz: 43958f4da579b5c072c1c5268247473b2a1013e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c965240ced0d02f08c6271d1ed225add012fd15542e804d70a1697b8dce92613aace55b7767a54c776985acfe9073890fdd9899c6e274f378e61c9014b1c9c4c
|
7
|
+
data.tar.gz: 7135a111f2e713dc2ac92a32d279aa15d19a7841a1bc808c7c392504237d6b16d4ea12ccda55014bb57250a775f6f3a24f4413cff3b0ee4bf3a23946f3006114
|
@@ -80,7 +80,7 @@ window.ParsleyConfig = window.ParsleyConfig || {};
|
|
80
80
|
var delimiter = self.options.inlistDelimiter || ',';
|
81
81
|
var listItems = (list + "").split(new RegExp("\\s*\\" + delimiter + "\\s*"));
|
82
82
|
|
83
|
-
return (
|
83
|
+
return ($.inArray($.trim(val), listItems) !== -1);
|
84
84
|
}
|
85
85
|
, priority: 32
|
86
86
|
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
window.ParsleyConfig = window.ParsleyConfig || {};
|
2
|
+
|
3
|
+
(function ($) {
|
4
|
+
window.ParsleyConfig = $.extend( true, {}, window.ParsleyConfig, {
|
5
|
+
messages: {
|
6
|
+
// parsley //////////////////////////////////////
|
7
|
+
defaultMessage: "ค่านี้ดูเหมือนว่าจะไม่ถูกต้อง"
|
8
|
+
, type: {
|
9
|
+
email: "ค่านี้ควรจะเป็นอีเมลที่ถูกต้อง"
|
10
|
+
, url: "ค่านี้ควรจะเป็น url ที่ถูกต้อง"
|
11
|
+
, urlstrict: "ค่านี้ควรจะเป็น url ที่ถูกต้อง"
|
12
|
+
, number: "ค่านี้ควรจะเป็นตัวเลขที่ถูกต้อง"
|
13
|
+
, digits: "ค่านี้ควรจะเป็นเลขโดด"
|
14
|
+
, dateIso: "ค่านี้ควรจะเป็นวันที่ที่ถูกต้อง (YYYY-MM-DD)"
|
15
|
+
, alphanum: "ค่านี้ควรจะเป็นตัวอักษรเลข"
|
16
|
+
, phone: "ค่านี้ควรจะเป็นหมายเลขโทรศัพท์ที่ถูกต้อง"
|
17
|
+
}
|
18
|
+
, notnull: "ค่านี้ไม่ควรจะไม่มีค่า"
|
19
|
+
, notblank: "ค่านี้ไม่ควรจะว่าง"
|
20
|
+
, required: "ค่านี้จำเป็น"
|
21
|
+
, regexp: "ค่านี้ดูเหมือนว่าจะไม่ถูกต้อง"
|
22
|
+
, min: "ค่านี้ควรจะมากกว่าหรือเท่ากับ %s"
|
23
|
+
, max: "ค่านี้ควรจะน้อยกว่าหรือเท่ากับ %s"
|
24
|
+
, range: "ค่านี้ควรอยู่ระหว่าง %s และ %s"
|
25
|
+
, minlength: "ค่านี้สั้นเกินไป, ควรมี %s อักขระหรือมากกว่า"
|
26
|
+
, maxlength: "ค่านี้ยาวเกินไป, ควรมี %s อักขระหรือน้อยกว่า"
|
27
|
+
, rangelength: "ความยาวของค่านี้ไม่ถูกต้อง, ควรมีความยาวอักขระระหว่าง %s และ %s"
|
28
|
+
, mincheck: "คุณจะต้องเลือกอย่างน้อย %s ตัวเลือก"
|
29
|
+
, maxcheck: "คุณจะต้องเลือก %s ตัวเลือกหรือน้อยกว่า"
|
30
|
+
, rangecheck: "คุณจะต้องเลือกระหว่าง %s และ %s ตัวเลือก"
|
31
|
+
, equalto: "ค่านี้ควรจะมีค่าเหมือนกัน"
|
32
|
+
|
33
|
+
// parsley.extend ///////////////////////////////
|
34
|
+
, minwords: "ค่านี้ควรมีจำนวนคำอย่างน้อย %s คำ"
|
35
|
+
, maxwords: "่คานี้ควรมีจำนวนคำไม่เกิน %s คำ"
|
36
|
+
, rangewords: "ค่านี้ควรอยู่ระหว่าง %s และ %s คำ"
|
37
|
+
, greaterthan: "ค่านี้ควรมากกว่า %s"
|
38
|
+
, lessthan: "ค่านี้ควรน้อยกว่า %s"
|
39
|
+
, beforedate: "วันที่นี้ควรก่อน %s"
|
40
|
+
, afterdate: "วันที่นี้ควรหลัง %s"
|
41
|
+
, americandate: "ค่านี้ควรเป็นวันที่ที่ถูกต้อง (MM/DD/YYYY)"
|
42
|
+
}
|
43
|
+
});
|
44
|
+
}(window.jQuery || window.Zepto));
|
@@ -424,7 +424,8 @@
|
|
424
424
|
* Remove li / ul error
|
425
425
|
*
|
426
426
|
* @method removeError
|
427
|
-
* @param
|
427
|
+
* @param {String} constraintName Method Name
|
428
|
+
* @return ParsleyUI
|
428
429
|
*/
|
429
430
|
, removeError: function ( constraintName ) {
|
430
431
|
var liError = this.ulError + ' .' + constraintName
|
@@ -436,13 +437,16 @@
|
|
436
437
|
if ( that.ulError && $( that.ulError ).children().length === 0 ) {
|
437
438
|
that.removeErrors();
|
438
439
|
} } ) : $( liError ).remove();
|
440
|
+
|
441
|
+
return this;
|
439
442
|
}
|
440
443
|
|
441
444
|
/**
|
442
445
|
* Add li error
|
443
446
|
*
|
444
447
|
* @method addError
|
445
|
-
* @param
|
448
|
+
* @param {Object} { minlength: "error message for minlength constraint" }
|
449
|
+
* @return ParsleyUI
|
446
450
|
*/
|
447
451
|
, addError: function ( error ) {
|
448
452
|
for ( var constraint in error ) {
|
@@ -450,21 +454,44 @@
|
|
450
454
|
|
451
455
|
$( this.ulError ).append( this.options.animate ? $( liTemplate ).html( error[ constraint ] ).hide().fadeIn( this.options.animateDuration ) : $( liTemplate ).html( error[ constraint ] ) );
|
452
456
|
}
|
457
|
+
|
458
|
+
return this;
|
459
|
+
}
|
460
|
+
|
461
|
+
/**
|
462
|
+
* Update existing error if text has changed
|
463
|
+
*
|
464
|
+
* @method updateError
|
465
|
+
* @param {Object} { minlength: "error message for minlength constraint" }
|
466
|
+
* @return ParsleyUI
|
467
|
+
*/
|
468
|
+
, updateError: function ( error ) {
|
469
|
+
for ( var constraint in error ) {
|
470
|
+
if ( error[ constraint ] !== $( this.ulError + " > li." + constraint ).html() ) {
|
471
|
+
this.removeError( constraint ).addError( error );
|
472
|
+
}
|
473
|
+
}
|
474
|
+
|
475
|
+
return this;
|
453
476
|
}
|
454
477
|
|
455
478
|
/**
|
456
479
|
* Remove all ul / li errors
|
457
480
|
*
|
458
481
|
* @method removeErrors
|
482
|
+
* @return ParsleyUI
|
459
483
|
*/
|
460
484
|
, removeErrors: function () {
|
461
485
|
this.options.animate ? $( this.ulError ).fadeOut( this.options.animateDuration, function () { $( this ).remove(); } ) : $( this.ulError ).remove();
|
486
|
+
|
487
|
+
return this;
|
462
488
|
}
|
463
489
|
|
464
490
|
/**
|
465
491
|
* Remove ul errors and parsley error or success classes
|
466
492
|
*
|
467
493
|
* @method reset
|
494
|
+
* @return ParsleyUI
|
468
495
|
*/
|
469
496
|
, reset: function () {
|
470
497
|
this.ParsleyInstance.valid = null;
|
@@ -483,7 +510,8 @@
|
|
483
510
|
* Add li / ul errors messages
|
484
511
|
*
|
485
512
|
* @method manageError
|
486
|
-
* @param
|
513
|
+
* @param {Object} constraint
|
514
|
+
* @return ParsleyUI
|
487
515
|
*/
|
488
516
|
, manageError: function ( constraint ) {
|
489
517
|
// display ulError container if it has been removed previously (or never shown)
|
@@ -494,11 +522,13 @@
|
|
494
522
|
// TODO: refacto properly
|
495
523
|
// if required constraint but field is not null, do not display
|
496
524
|
if ( 'required' === constraint.name && null !== this.ParsleyInstance.getVal() && this.ParsleyInstance.getVal().length > 0 ) {
|
497
|
-
return;
|
525
|
+
return this;
|
526
|
+
|
498
527
|
// if empty required field and non required constraint fails, do not display
|
499
528
|
} else if ( this.ParsleyInstance.isRequired && 'required' !== constraint.name && ( null === this.ParsleyInstance.getVal() || 0 === this.ParsleyInstance.getVal().length ) ) {
|
500
529
|
this.removeError( constraint.name );
|
501
|
-
|
530
|
+
|
531
|
+
return this;
|
502
532
|
}
|
503
533
|
|
504
534
|
// TODO: refacto error name w/ proper & readable function
|
@@ -509,17 +539,19 @@
|
|
509
539
|
this.ParsleyInstance.Validator.messages[ constraintName ][ constraint.requirements ] : ( 'undefined' === typeof this.ParsleyInstance.Validator.messages[ constraintName ] ?
|
510
540
|
this.ParsleyInstance.Validator.messages.defaultMessage : this.ParsleyInstance.Validator.formatMesssage( this.ParsleyInstance.Validator.messages[ constraintName ], constraint.requirements ) ) );
|
511
541
|
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
542
|
+
liError[ liClass ] = message;
|
543
|
+
|
544
|
+
// add liError if not shown. update if already exist
|
545
|
+
!$( this.ulError + ' .' + liClass ).length ? this.addError( liError ) : this.updateError( liError );
|
546
|
+
|
547
|
+
return this;
|
517
548
|
}
|
518
549
|
|
519
550
|
/**
|
520
551
|
* Create ul error container
|
521
552
|
*
|
522
553
|
* @method manageErrorContainer
|
554
|
+
* @return ParsleyUI
|
523
555
|
*/
|
524
556
|
, manageErrorContainer: function () {
|
525
557
|
var errorContainer = this.options.errorContainer || this.options.errors.container( this.ParsleyInstance.element, this.ParsleyInstance.isRadioOrCheckbox )
|
@@ -531,6 +563,8 @@
|
|
531
563
|
}
|
532
564
|
|
533
565
|
!this.ParsleyInstance.isRadioOrCheckbox ? this.ParsleyInstance.$element.after( ulTemplate ) : this.ParsleyInstance.$element.parent().after( ulTemplate );
|
566
|
+
|
567
|
+
return this;
|
534
568
|
}
|
535
569
|
};
|
536
570
|
|
@@ -585,7 +619,9 @@
|
|
585
619
|
this.UI = new ParsleyUI( this );
|
586
620
|
|
587
621
|
// bind some html5 properties
|
588
|
-
this.
|
622
|
+
if ( this.options.useHtml5Constraints ) {
|
623
|
+
this.bindHtml5Constraints();
|
624
|
+
}
|
589
625
|
|
590
626
|
// bind validators to field
|
591
627
|
this.addConstraints();
|
@@ -711,7 +747,10 @@
|
|
711
747
|
this.constraints[ constraint.name ] = $.extend( true, this.constraints[ constraint.name ], constraint );
|
712
748
|
|
713
749
|
if ( 'string' === typeof message ) {
|
714
|
-
|
750
|
+
if ( constraint.name === 'type' )
|
751
|
+
this.Validator.messages[ constraint.name ][ constraint.requirements ] = message ;
|
752
|
+
else
|
753
|
+
this.Validator.messages[ constraint.name ] = message ;
|
715
754
|
}
|
716
755
|
|
717
756
|
// force field validation next check and reset validation events
|
@@ -863,9 +902,8 @@
|
|
863
902
|
* @method getLength
|
864
903
|
* @return {int} The length of the value
|
865
904
|
*/
|
866
|
-
, getLength: function(val) {
|
867
|
-
|
868
|
-
return val.length;
|
905
|
+
, getLength: function ( val ) {
|
906
|
+
return !val || !val.hasOwnProperty( 'length' ) ? 0 : val.length;
|
869
907
|
}
|
870
908
|
|
871
909
|
/**
|
@@ -1097,7 +1135,7 @@
|
|
1097
1135
|
this.$element = $( element );
|
1098
1136
|
this.group = options.group || false;
|
1099
1137
|
this.hash = this.getName();
|
1100
|
-
this.siblings = this.group ? '[
|
1138
|
+
this.siblings = this.group ? '[' + options.namespace + 'group="' + this.group + '"]' : 'input[name="' + this.$element.attr( 'name' ) + '"]';
|
1101
1139
|
this.isRadioOrCheckbox = true;
|
1102
1140
|
this.isRadio = this.$element.is( 'input[type=radio]' );
|
1103
1141
|
this.isCheckbox = this.$element.is( 'input[type=checkbox]' );
|
@@ -1137,7 +1175,7 @@
|
|
1137
1175
|
throw "A radio / checkbox input must have a parsley-group attribute or a name to be Parsley validated !";
|
1138
1176
|
}
|
1139
1177
|
|
1140
|
-
return 'parsley-' + this.$element.attr( 'name' ).replace( /(:|\.|\[|\])/g, '' );
|
1178
|
+
return 'parsley-' + this.$element.attr( 'name' ).replace( /(:|\.|\[|\]|\$)/g, '' );
|
1141
1179
|
}
|
1142
1180
|
|
1143
1181
|
/**
|
@@ -1246,10 +1284,6 @@
|
|
1246
1284
|
* @param elem
|
1247
1285
|
*/
|
1248
1286
|
, addItem: function ( elem ) {
|
1249
|
-
if ( $( elem ).is( this.options.excluded ) ) {
|
1250
|
-
return false;
|
1251
|
-
}
|
1252
|
-
|
1253
1287
|
var ParsleyField = $( elem ).parsley( this.options );
|
1254
1288
|
ParsleyField.setParent( this );
|
1255
1289
|
|
@@ -1459,7 +1493,7 @@
|
|
1459
1493
|
for ( var i in this[ 0 ].attributes ) {
|
1460
1494
|
attribute = this[ 0 ].attributes[ i ];
|
1461
1495
|
|
1462
|
-
if ( null !== attribute && attribute.specified && regex.test( attribute.name ) ) {
|
1496
|
+
if ( 'undefined' !== typeof attribute && null !== attribute && attribute.specified && regex.test( attribute.name ) ) {
|
1463
1497
|
obj[ camelize( attribute.name.replace( namespace, '' ) ) ] = deserializeValue( attribute.value );
|
1464
1498
|
}
|
1465
1499
|
}
|
@@ -1530,6 +1564,7 @@
|
|
1530
1564
|
, errorMessage: false // Customize an unique error message showed if one constraint fails
|
1531
1565
|
, validators: {} // Add your custom validators functions
|
1532
1566
|
, showErrors: true // Set to false if you don't want Parsley to display error messages
|
1567
|
+
, useHtml5Constraints: true // Set to false if you don't want Parsley to use html5 constraints
|
1533
1568
|
, messages: {} // Add your own error messages here
|
1534
1569
|
|
1535
1570
|
//some quite advanced configuration here..
|
@@ -1541,7 +1576,7 @@
|
|
1541
1576
|
, errorElem: '<li></li>' // each field constraint fail in an li
|
1542
1577
|
}
|
1543
1578
|
, listeners: {
|
1544
|
-
onFieldValidate: function ( elem,
|
1579
|
+
onFieldValidate: function ( elem, ParsleyField ) { return false; } // Executed on validation. Return true to ignore field validation
|
1545
1580
|
, onFormValidate: function ( isFormValid, event, ParsleyForm ) {} // Executed once on form validation. Return (bool) false to block submit, even if valid
|
1546
1581
|
, onFieldError: function ( elem, constraints, ParsleyField ) {} // Executed when a field is detected as invalid
|
1547
1582
|
, onFieldSuccess: function ( elem, constraints, ParsleyField ) {} // Executed when a field passes validation
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parsley-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jiri Pospisil
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -70,6 +70,7 @@ files:
|
|
70
70
|
- vendor/assets/javascripts/parsley.i18n.ro.js
|
71
71
|
- vendor/assets/javascripts/parsley.i18n.ru.js
|
72
72
|
- vendor/assets/javascripts/parsley.i18n.sv.js
|
73
|
+
- vendor/assets/javascripts/parsley.i18n.th.js
|
73
74
|
- vendor/assets/javascripts/parsley.i18n.tr.js
|
74
75
|
- vendor/assets/javascripts/parsley.i18n.ua.js
|
75
76
|
- vendor/assets/javascripts/parsley.i18n.vn.js
|