Correzione
C'è una proprietà a disposizione che cambia l'originale valore quando un valore Get Set.
trackResetOnLoad: vero
Vedere questo JSFiddle
Vecchio risposta qui sotto potrebbe essere smettere scomodo, ma ho lasciarlo invariato
Prima di tutto devo dire che si vuole non trovare alcun metodo tale
E questo perché il modulo non ha un tale stato, i campi ce l'hanno. Tutto ciò che fa il modulo sta iterando su ogni campo e controlla se è sporco. Se un campo è sporco, verrà controllato se questo valore (il segno sporco) è cambiato dall'ultimo controllo e in tal caso viene generato l'evento dirtychange
. Allora questo vengono salvati come ultimo controllo (wasDirty
)
Ora diamo un'occhiata ai campi causa che realmente innescare:
Essi stanno controllando onChange
e onReset
se il campo è sporca controllando !me.isEqual(me.getValue(), me.originalValue)
dove originalValue
è la valore impostato per l'ora in cui è stato chiamato initValue
.
Ora quello che sta per fare per 'set' il modulo non è più 'sporco'
iterare su tutti i campi del modulo utilizzando getFields()
su Ext.form.Basic
ora ci impostare il valore corrente come valore originale (reset ora resetta a questo valore) chiamando initValue
su ogni campo e il gioco è fatto.
codice errato rimosso
Modifica
Beh ho modificato il mio ultimo codice dall'alto per
var items = form.getForm().getFields().items,
i = 0,
len = items.length;
for(; i < len; i++) {
var c = items[i];
if(c.mixins && c.mixins.field && typeof c.mixins.field['initValue'] == 'function') {
c.mixins.field.initValue.apply(c);
c.wasDirty = false;
}
}
e biforcuta un working example. Il pulsante rimarrà inattivo fino a quando non verranno rilevate eventuali modifiche e verrà nuovamente impostato inattivo se si rimuovono le modifiche. Gioca con lui Immagino che questo sia quello che stai cercando.
Sembra che 'Ext.Form.Field' non abbia il metodo' SetDirty() '. –
Vedi domanda aggiornata –
@ s.webbandit Vedere la mia risposta aggiornata – sra