2016-03-24 1 views
0

Ich verwende die Ext.form.field.Tag Komponente. Wenn ich eine Zeichenfolge in das richtige Format kopiere, werden alle Werte ausgewählt und alles funktioniert einwandfrei. Wenn die Werte jedoch nicht korrekt eingefügt werden, d. H. Leerzeichen vor und/oder nach dem Komma, kein Komma am Ende der Zeichenfolge usw., werden einige der Werte nicht synchronisiert.ExtJS Formularfeld - mehrere Werte setzen

Das Problem, mit dem ich konfrontiert bin, ist, wenn die Zeichenfolge im falschen Format ist, kann ich es korrigieren, indem Sie whitespaces vor/nach den Kommas entfernen, aber ich bekomme nie die Chance, dies zu tun.

Zum Beispiel, wenn die eingefügte Zeichenfolge ist:

"1,2,3, 4, 5, 6, 7,8,9,10," 

nur die Werte ohne Leerzeichen zwischen dem Komma vor und nach wird es mit der Dropdown-Liste synchronisieren. Also

1,2,3,8,9, and 10 

wird synchronisiert, aber der Rest wird ignoriert werden.

Wer hat irgendwelche Vorschläge, was der beste Weg wäre, damit umzugehen?

Ich brauche etwas wie ein "beforechange" -Ereignis, weil "change" nur ausgelöst wird, nachdem diese Werte synchronisiert wurden und zu diesem Zeitpunkt die ignorierten Werte verloren gegangen sind.

Antwort

0

Ich fand das Feld (this) im Änderungsereignis enthält eine Eigenschaft namens "lastMutatedValue", die der eingefügten Zeichenfolge entspricht und genau das ist, was ich brauchte.

change:function(fld_){ 
    var str = fld_.getValue(); 
    if(fld_.lastMutatedValue){ 
    //concat current values with copy pasted values 
    str = str + "," + fld_.lastMutatedValue.replace(/\s*,\s*/g, ','); //removes any white spaces before/after commas 
    } 
    fld_.setValue(str); 
} 
0

Haben Sie das Ereignis "Fokus" versucht? Es sollte vor dem Ereignis 'Ändern' ausgelöst werden.

+0

"Fokus" wird ausgelöst, bevor ich sogar die Werte einfügen. – stackato