Skip to content

Commit d81997e

Browse files
committed
Merge pull request #730 from elisherer/master
Fix onFieldFailure and onFieldSuccess events to run only once. +Hebrew lang
2 parents 830088a + 3bb9c4c commit d81997e

File tree

2 files changed

+149
-10
lines changed

2 files changed

+149
-10
lines changed

js/jquery.validationEngine.js

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,6 @@
133133
var form = element.closest('form, .validationEngineContainer'),
134134
options = (form.data('jqv')) ? form.data('jqv') : $.validationEngine.defaults,
135135
valid = methods._validateField(element, options);
136-
137-
if (valid && options.onFieldSuccess)
138-
options.onFieldSuccess();
139-
else if (options.onFieldFailure && options.InvalidFields.length > 0) {
140-
options.onFieldFailure();
141136
}
142137
}
143138
if(options.onValidationComplete) {
@@ -160,6 +155,8 @@
160155

161156
var options = form.data('jqv');
162157
// No option, take default one
158+
if (!options)
159+
options = methods._saveOptions(form, options);
163160
form.find('['+options.validateAttribute+'*=validate]').not(":disabled").each(function(){
164161
var field = $(this);
165162
if (options.prettySelect && field.is(":hidden"))
@@ -199,6 +196,9 @@
199196
hide: function() {
200197
var form = $(this).closest('form, .validationEngineContainer');
201198
var options = form.data('jqv');
199+
// No option, take default one
200+
if (!options)
201+
options = methods._saveOptions(form, options);
202202
var fadeDuration = (options && options.fadeDuration) ? options.fadeDuration : 0.3;
203203
var closingtag;
204204

@@ -235,15 +235,13 @@
235235
var field = $(this);
236236
var form = field.closest('form, .validationEngineContainer');
237237
var options = form.data('jqv');
238+
// No option, take default one
239+
if (!options)
240+
options = methods._saveOptions(form, options);
238241
options.eventTrigger = "field";
239242
// validate the current field
240243
window.setTimeout(function() {
241244
methods._validateField(field, options);
242-
if (options.InvalidFields.length == 0 && options.onFieldSuccess) {
243-
options.onFieldSuccess();
244-
} else if (options.InvalidFields.length > 0 && options.onFieldFailure) {
245-
options.onFieldFailure();
246-
}
247245
}, (event.data) ? event.data.delay : 0);
248246

249247
},
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
(function($){
2+
$.fn.validationEngineLanguage = function(){
3+
};
4+
$.validationEngineLanguage = {
5+
newLang: function(){
6+
$.validationEngineLanguage.allRules = {
7+
"required": { // Add your regex rules here, you can take telephone as an example
8+
"regex": "none",
9+
"alertText": "* שדה זה הוא חובה",
10+
"alertTextCheckboxMultiple": "* אנא בחר אפשרות",
11+
"alertTextCheckboxe": "* תיבת הבחירה היא חובה",
12+
"alertTextDateRange": "* שני תאריכי הטווח הם חובה"
13+
},
14+
"requiredInFunction": {
15+
"func": function(field, rules, i, options){
16+
return (field.val() == "test") ? true : false;
17+
},
18+
"alertText": "* שדה חייב להיות שווה לבדיקה"
19+
},
20+
"dateRange": {
21+
"regex": "none",
22+
"alertText": "* טווח תאריכים ",
23+
"alertText2": "לא תקין"
24+
},
25+
"dateTimeRange": {
26+
"regex": "none",
27+
"alertText": "* טווח תאריך-זמן ",
28+
"alertText2": "לא תקין"
29+
},
30+
"minSize": {
31+
"regex": "none",
32+
"alertText": "* דרושים לפחות ",
33+
"alertText2": " תוים"
34+
},
35+
"maxSize": {
36+
"regex": "none",
37+
"alertText": "* מותרים לכל היותר ",
38+
"alertText2": " תוים"
39+
},
40+
"groupRequired": {
41+
"regex": "none",
42+
"alertText": "* חובה למלא אחד מהשדות"
43+
},
44+
"min": {
45+
"regex": "none",
46+
"alertText": "* הערך המינימלי הוא "
47+
},
48+
"max": {
49+
"regex": "none",
50+
"alertText": "* הערך המקסימלי הוא "
51+
},
52+
"past": {
53+
"regex": "none",
54+
"alertText": "* תאריך קודם ל "
55+
},
56+
"future": {
57+
"regex": "none",
58+
"alertText": "* תאריך מאוחר מ "
59+
},
60+
"maxCheckbox": {
61+
"regex": "none",
62+
"alertText": "* מותרות לכל היותר ",
63+
"alertText2": " אופציות"
64+
},
65+
"minCheckbox": {
66+
"regex": "none",
67+
"alertText": "* אנא בחר ",
68+
"alertText2": " אופציות"
69+
},
70+
"equals": {
71+
"regex": "none",
72+
"alertText": "* השדות לא תואמים"
73+
},
74+
"creditCard": {
75+
"regex": "none",
76+
"alertText": "* מספר כרטיס אשראי לא תקין"
77+
},
78+
"phone": {
79+
// credit: jquery.h5validate.js / orefalo
80+
"regex": /^([\+][0-9]{1,3}[\ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9\ \.\-\/]{3,20})((x|ext|extension)[\ ]?[0-9]{1,4})?$/,
81+
"alertText": "* מספר טלפון לא תקין"
82+
},
83+
"email": {
84+
// HTML5 compatible email regex ( http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html# e-mail-state-%28type=email%29 )
85+
"regex": /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
86+
"alertText": "* תיבת דואר אלקטרוני לא תקינה"
87+
},
88+
"integer": {
89+
"regex": /^[\-\+]?\d+$/,
90+
"alertText": "* מספר שלם לא תקין"
91+
},
92+
"number": {
93+
// Number, including positive, negative, and floating decimal. credit: orefalo
94+
"regex": /^[\-\+]?((([0-9]{1,3})([,][0-9]{3})*)|([0-9]+))?([\.]([0-9]+))?$/,
95+
"alertText": "* מספר בעל נקודה עשרונית לא תקין"
96+
},
97+
"date": {
98+
// Check if date is valid by leap year
99+
"func": function (field) {
100+
var pattern = new RegExp(/^(\d{4})[\/\-\.](0?[1-9]|1[012])[\/\-\.](0?[1-9]|[12][0-9]|3[01])$/);
101+
var match = pattern.exec(field.val());
102+
if (match == null)
103+
return false;
104+
105+
var year = match[1];
106+
var month = match[2]*1;
107+
var day = match[3]*1;
108+
var date = new Date(year, month - 1, day); // because months starts from 0.
109+
110+
return (date.getFullYear() == year && date.getMonth() == (month - 1) && date.getDate() == day);
111+
},
112+
"alertText": "* תאריך לא תקין, חייב ליות בתבנית YYYY-MM-DD"
113+
},
114+
"ipv4": {
115+
"regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/,
116+
"alertText": "* כתובת IP לא תקינה"
117+
},
118+
"url": {
119+
"regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,
120+
"alertText": "* קישור לא תקין"
121+
},
122+
"onlyNumberSp": {
123+
"regex": /^[0-9\ ]+$/,
124+
"alertText": "* מספרים בלבד"
125+
},
126+
"onlyLetterSp": {
127+
"regex": /^[a-zA-Z\ \']+$/,
128+
"alertText": "* אותיות באנגלית בלבד"
129+
},
130+
"onlyLetterNumber": {
131+
"regex": /^[0-9a-zA-Z]+$/,
132+
"alertText": "* אסורים תוים מיוחדים"
133+
}
134+
};
135+
136+
}
137+
};
138+
139+
$.validationEngineLanguage.newLang();
140+
141+
})(jQuery);

0 commit comments

Comments
 (0)