j-Editable
Diese Komponente kann alle Elemente mit der editable-Klasse bearbeiten. es funktioniert mit data-bind oder dynamischen Werte.
Konfiguration:
autofocus{Boolean} konzentriert sich auf das erste Element (Default:false)validate{Boolean} kann Validierung deaktivieren (Default:true)disabled{Boolean} kann die Bearbeitung deaktivieren (es fügtui-editable-disabledundui-editable-enabledKlassen hinzu), Standard:falsechanged{String} optionale, eine Verbindung zu einer Methode oder Path --> es enthält das Objekt mit geänderten Werte nurenter{String} optionale, eine Verbindung zu einer Methodemethod(path, value, el), die Methode wird ausgeführt, wenn der BenutzerENTERdrücktescape{String} optionale, eine Verbindung zu einer Methodemethod(path, value, el), die Methode wird ausgeführt, wenn der BenutzerESCdrücktcan{String} optionale, eine Verbindung zur Methodemethod(opt, el)mussbooleanzurückgeben, das bedeutet, dasscan edit?error{String} optionale, eine Verbindung zu der Methodemethod(el, isInvalid, meta)wird beurteilt, wenn das Element nicht funktioniert und umgekehrt- NEW
class {String}optionale, fügt ein Klassenname in der Formui-editable-CLASShinzu (Default:default)
Das data-editable-Attribute beschreibt das Verhalten:
path{String} eine relative Path zu Eigentum (sie kann automatisch vondata-binderben)required{Boolean} optional, aktiviert „erforderlich“ (Standard:false)type{String} optionale, kannstring(Default),date,number,boolean,emailoderhtmlNEWtagsseincan{String} optionale, eine Route nachfunction(opt, el)mussbooleanzurückkehren, das bedeutet, dasscan edit?save{String} optionale, eine Route zufunction(opt, accepted(boolean)),acceptedFunktion muss bewertet werdenformat{String} optionale, ein Format fürdate, Standard:yyyy-MM-dddirsource{String} optionale, Weg zu einer Datenquelledircustom{String/Boolean} optionale, kann einen Weg zufunction(val, next(new_val))enthalten oder kannBoolean. Diese Option ermöglicht die Einhaltung eines angegebenen Wertes (Wert nicht definiert in der Datenquelle)dirrender{String} optionale, eine Route zufunction(item, text)(HTML fürj-Directoryzurückzuführen), kann diese Funktion die Liste der Elemente inj-Directorybeeinflussendirminwidth{Nummer} optionale, eine Mindestbreite fürj-Directory, Standard:200dirmaxwidth{Nummer} optionale, eine maximale Breite fürj-Directorydirplaceholder{String} optionale, ein Platzinhaber fürj-Directorydirempty{String} optionale, fügt ein leeres Feld fürj-Directoryhinzudirkey{String} optionale, ein Schlüsselname für das Lesen vontextindirsource(Default:name)dirvalue{String} optionale, ein Schlüsselname für das Lesen vonvalueindirsource(Default:id)dirsearch{Boolean} optionale, kann die Suche nachj-Directorydeaktiviert werdenautosource{String} einen Weg zusearchFunktion inautocomplete,function(search, render(arr))autovalue{String} eine Eigentumsstraße für den Wert inautosourcemaxlength{Nummer} eine Maxlängeminvalue{Nummer} eine min. Wert für die Nummer Typ (Default:undefined)maxvalue{Nummer} eine maximale Wert für die Zahltyp (Default:undefined)rebind{Boolean} wenntruenur auf dieses Elementdata-bindabhängt (Default:0)validate{String} optionale, eine Voraussetzung für die Validierung von Wert, kann einen Link zufunction(value)oder!!value.match(/[a-z]+/)enthaltenmultiline{Boolean} optionale, ermöglicht multiline + Appends Klasseeditable-multiline(inline-block+width:100%) bei der Bearbeitung (Default:false)raw{Boolean} optionale, wenntruedann die aktuelle HTML-Inhalte als Platzinhaber sein wird, wenn der Wertnullableist (Default:true)accept{String} optionale, eine Voraussetzung für die Akzeptanz von Wert, kann einen Link zufunction(value)oder!!value.match(/[a-z]+/)ist ähnlich wievalidateenthaltenempty{String} optionale, ermöglicht leer Wert und kann leere Etikette oder1odertruefür Autorebindvon Binder enthalteninvalid{String} optionale, eine Verbindung zu der Methodemethod(el, isInvalid, meta)wird beurteilt, wenn das Element nicht funktioniert und umgekehrt
Methoden:
- NEW:
component.changed()gibt ein Objekt mit geänderten Daten zurück
Gut zu wissen:
- Wenn der Benutzer ein paar
keydrückt, enthält das bearbeitbare Element diekeypressed-Klasse, solange sie nicht die Kontrolle verlassen haben. - Jedes veränderte Element enthält eine Klasse von
changed - Wenn die Komponente einige Werte ändert, enthält das Hauptelement die Klasse
ui-editable-changed - Wenn das Element
data-bindmitemptyhat, wird es nach dem Fokus entfernt. - NEW unterstützt jetzt den
tags-Typ. Für jetzt unterstützt es nur mitrebindunddata-bind. (Datenbindungtemplatemit{jQuery selector}arbeitet von+v18) - _NEW__ wenn das Element (oder der Elternteil oder der Elternteile) den
data-disabled="1"-Attribut enthält, wird die Kontrolle ausgeschaltet. - NEW verborgenen und disabled Elemente werden nicht validiert
Verwenden Sie es mit <ui-component name="editable">. Wenn die Komponente noch nicht geladen ist, lädt jComponent sie bei der ersten Verwendung von der Adresse in DEF.fallback herunter (standardmäßig das CDN Componentator). Autor: Peter Širka. Quelle: Componentator-Komponenten-Repository, MIT-Lizenz.
<style>
.changed {}
.changed::after { float: right; content: '+'; margin-left: 5px; font-weight: normal; color: orange; }
</style>
<ui-component name="LAZY datepicker"></ui-component>
<ui-component name="LAZY directory"></ui-component>
<ui-component name="editable" path="form">
<div style="width:500px;padding:10px;border:1px solid #E0E0E0">
<div class="row">
<div class="col-xs-3">
Name:
</div>
<div class="col-xs-9">
<ui-bind path="form.name" config="html" class="editable block" data-editable="required:true"></ui-bind>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Email:
</div>
<div class="col-xs-9">
<ui-bind path="form.email" config="html" class="editable block" data-editable="required:1;type:email"></ui-bind>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Nickname:
</div>
<div class="col-xs-9">
<ui-bind path="form.nickname" config="empty:Nickname;html" class="editable block" data-editable="required:true"></ui-bind>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Framework:
</div>
<div class="col-xs-9">
<ui-bind class="editable block" config="html;empty:Choose a framework;change:renderframework" path="form.frameworkid" data-editable="dirsource:frameworks;"></ui-bind>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Country:
</div>
<div class="col-xs-9">
<ui-bind path="form.countries" config="template:{#countrytags}" class="editable block" data-editable="rebind:1;dirsource:countries;type:tags"></ui-bind>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Date:
</div>
<div class="col-xs-9">
<ui-bind path="form.date" config="html:(new Date() || value).format('yyyy-MM-dd')" class="editable block" data-editable="type:date"></ui-bind>
</div>
</div>
</div>
<pre><ui-bind path="form" config="html:JSON.stringify(value, null, ' ')"></ui-bind></pre>
</ui-component>
<script type="text/html" id="countrytags">
{{ foreach m in value }}<span class="editable-tag"><i class="ti ti-times"></i>{{ m }}</span>{{ end }}
</script>
<script>
// Alternative to tags (ui-bind path="path" config="change:myfunc")
function myfunc(data, path, el) {
if (!data)
return el.html('');
var template = '<span class="tag"><i class="ti ti-times"></i>{0}</span>';
var html = '';
for (var i = 0; i < data.length; i++)
html += template.format(data[i]);
el.html(html);
}
var frameworks = [{ id: 0, name: 'Nothing', template: '<b>{{ name }}</b>' }, { id: 1, name: 'jComponent' }, { id: 2, name: 'Angular.js' }, { id: 3, name: 'React' }];
var countries = ['Slovakia', 'Poland', 'Hungary', 'Germany', 'USA', 'Austria', 'Poland', 'Czechia'];
var form = {};
form.date = new Date();
form.name = 'Peter Širka';
form.countries = ['Slovakia', 'Hungary'];
form.frameworkid = 0;
function renderframework(value, path, el) {
return value ? frameworks.findValue('id', value, 'name', DEF.empty) : DEF.empty;
}
</script>