2012-04-12 5 views
0

unter Plone4/Zope3, habe ich ein Formular, um ein neues Objekt hinzuzufügen.Zope-Formular: Hinzufügen einer Schaltfläche zum automatischen Füllen einiger Felder

Ich möchte eine Taste nach dem ersten Feld hinzuzufügen, folgendes zu tun: - der Benutzer den Wert für das erste Feld betritt - er drückt diese neue Schaltfläche - und der Server wird versuchen, das zu erraten verbleibendes Feld basierend auf dem ersten Feld und einer externen Datenbank. - der Benutzer muss dann prüfen, ob alle Felder in Ordnung sind und dann das Formular absenden.

Ich bin kein Zope-Experte und habe einige Zeit damit verbracht, herauszufinden, wie man das macht.

Ist das Erstellen eines Unterformulars eine gute Idee?

Wenn nicht, könnte ich eine neue Schaltfläche zum Formular hinzufügen: Ich habe versucht, so etwas wie @ button.buttonAndHandler (_ (u'Essai ')) def essai (self, action): print "Taste essai"

aber dann habe ich die folgenden Probleme: - wie rendern die Schaltfläche nach dem ersten Feld und nicht am unteren Rand? - Wie aktualisiert man die restlichen Felder, ohne das Formular zu senden? - wie man den "addieren" und "abbrechen" Knopf behält, der verschwand, als ich diesen essai Knopf hinzufügte.

irgendwelche Hinweise? Thx

Antwort

0

Ich schlage vor, JavaScript zu verwenden, um das Problem zu lösen. Mit jquery können Sie eine zusätzliche Schaltfläche direkt hinter Ihrem ersten Feld einfügen (http://api.jquery.com/after). In der Button-Aktion fragen Sie eine Browser-Ansicht für die Suchergebnisse in json (http://docs.python.org/library/json.html) und füllen Sie die anderen Formularfelder aus, wie zum Beispiel:

jq('my-button').click(function(event) { 
    event.preventDefault(); 
    var first_field= jq('#first-field-id').val(); 
    jq.getJSON('/@@my-browser-view?value=' + value, function(result) { 
     jq('#other-field-id').val(result.val_for_other_field); 
     ... 
    }); 
});