Invoer valideren met validate() van een component
Een component die een waarde bewerkt, kan hem valideren. Definieer self.validate(value) en geef true (of een lege string) terug wanneer de waarde geldig is, of false (of een bericht) wanneer dat niet zo is. Schrijf de waarde terug met self.modify(value): het markeert de component ook als modified en touched.
jComponent bewaart deze statussen in config (invalid, touched, modified) en als CSS-klassen (ui-invalid, ui-touched, ui-modified), zodat opmaak geen code nodig heeft. ERRORS(path, callback) geeft de ongeldige componenten onder een pad terug, wat een formulier nodig heeft voor het verzenden, en RESET(path) wist de statussen touched en modified.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>jComponent</title>
<link rel="stylesheet" href="//cdn.componentator.com/spa.min@20.css" />
<script src="//cdn.componentator.com/spa.min@20.js"></script>
</head>
<body>
<style>.ui-invalid input { border: 2px solid crimson; }</style>
<ui-component name="required" path="form.name"></ui-component>
<ui-component name="required" path="form.email"></ui-component>
<script>
COMPONENT('required', function(self) {
self.make = function() {
self.html('<input type="text" />');
self.find('input').on('input', function() {
self.modify(this.value);
});
};
self.validate = function(value) {
return !!value && value.length > 2;
};
self.setter = function(value) {
self.find('input').val(value || '');
};
});
SET('form.name', 'Peter');
SET('form.email', '');
</script>
</body>
</html>Bewerk het voorbeeld en voer het uit. Het draait in een geïsoleerd frame in je browser; er wordt niets naar onze server gestuurd.
Voorbeeld