Skip to content

Commit

Permalink
#7 Vytvoření obecného pravidla pro kontrolu CZ/SK IČ
Browse files Browse the repository at this point in the history
- vytvořeno pravidlo pro kontrolu CZ/SK IČ
- oprava přidávání validní class v určitém případě, viz README.md
  • Loading branch information
zipper committed Nov 12, 2018
1 parent 054003c commit 61464be
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 11 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ $ cat bower.json

## Changelog

### v1.3.2
- Přidáno obecné pravidlo na formát CZ/SK IČ, které musí splňovat určité podmínky pro svůj ciferný součet. Pravidlo se očkává jako v namespace `Pd/Forms/Rules/` pod názvem `validICO`.
- Oprava přidávání validní class v určitém případě, viz níže.
- Element má alespoň dvě pravidla z nichž jedno je složené (podmíněné). V případě, že podmíněné pravidlo projde, tak díky vnořenému volání `pdForms.validateControl` se přidala validní class. I když pak druhé pravidlo neprošlo a přidalo nevalidní class, zůstala ona validní class ze zanořeného pravidla. Řešením je přesun přidávání validní class o úroveň výše, tj. po validaci celého prvku.

### v1.3.1
- Snippety mohou být i uvnitř formuláře ([#5](https://github.com/peckadesign/pdForms/issues/5)).
- Oprava vyvolání události po vyplnění inputu při AJAXové validaci
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "pd-forms",
"title": "pdForms",
"description": "Customization of netteForms for use in PeckaDesign.",
"version": "1.3.1",
"version": "1.3.2",
"author": "PeckaDesign, s.r.o <support@peckadesign.cz>",
"contributors": [
"Radek Šerý <radek.sery@peckadesign.cz>",
Expand Down
47 changes: 37 additions & 10 deletions pdForms.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* @author Radek Šerý <radek.sery@peckadesign.cz>
* @author Vít Kutný <vit.kutny@peckadesign.cz>
*
* @version 1.3.1
* @version 1.3.2
*
* - adds custom validation rules for optional rule (non-blocking errors, form can be still submitted)
* - changes some netteForms methods
Expand Down Expand Up @@ -73,7 +73,15 @@ pdForms.validateInput = function(e, $inputs) {
$validate.each(function() {
if ($(this).data('ever-focused')) {
// validate control using nette-rules && pd-rules (which are inside nette-rules actually)
Nette.validateControl(this);
var ret = Nette.validateControl(this);
var rules = Nette.parseJSON(this.getAttribute('data-nette-rules'));
var hasAsyncRule = pdForms.hasAsyncRule(rules);

// has to be here and not inside validateControl as it should add ok class only if whole input is valid (not only parts of condional rule etc.)
if (ret && ! hasAsyncRule) {
// add pdforms-valid class name if the input is valid
pdForms.addMessage(this, null, pdForms.constants.OK_MESSAGE);
}
}
});
};
Expand Down Expand Up @@ -128,11 +136,6 @@ pdForms.validateControl = function(elem, rules, onlyCheck) {
}
}

if (! onlyCheck && ! hasAsyncRule) {
// add pdforms-valid class name if the input is valid
pdForms.addMessage(elem, null, pdForms.constants.OK_MESSAGE);
}

return true;
};

Expand Down Expand Up @@ -384,6 +387,32 @@ pdForms.validators = {
);

return true;
},

'PdFormsRules_validICO': function(elem, arg, val) {
var a = 0;
var b = 0;

val = val.replace(/\s/g, '');

if (val.length !== 8 || ! Nette.validators.regexp(elem, String(/\d+/), val)) {
return false;
}

for (var i = 0 ; i < 7; i++) {
a += parseInt(val[i] * (8 - i));
}

a = a % 11;
if (a === 0) {
b = 1;
} else if (a === 1) {
b = 0;
} else {
b = 11 - a;
}

return parseInt(val[7]) === b;
}
};

Expand Down Expand Up @@ -460,9 +489,7 @@ Nette.validateControl = function(elem, rules, onlyCheck) {
}
}


ret = pdForms.validateControl(elem, rules, onlyCheck);
return ret;
return pdForms.validateControl(elem, rules, onlyCheck);
};


Expand Down

0 comments on commit 61464be

Please sign in to comment.