Erforderliche Felder abfragen und melden (Pflichtfelder)

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Benutzeravatar
nele_sonntag
Beiträge: 2742
Registriert: 04.05.2009, 15:12
Wohnort: Frankfurt
Kontaktdaten:

Erforderliche Felder abfragen und melden

Beitrag von nele_sonntag » 29.04.2014, 20:02

Hallo NIBEmann,

mir geht es nicht darum Kritik zu üben..allenfalls konstruktive. Ich versuche einfach nur, wenn ich etwas (unschönes) sehe, dieses als Tipp weiterzugeben. Wenn jemand möchte, kann er es annehmen, wenn nicht, dann nicht.

Und entschuldigen musst Du Dich nicht! :) Meine PDFs von vor 5 Jahren sind (auch) gruselig, wenn auch anders gruselig. :)

Und schon kommt der nächste Tipp. Benamung von Objekten - NIEMALS Umlaute, Sonderzeichen u.ä. "Überprüfung" geht gar nicht (nicht wegen mir, sondern weil das Programmierscripte nicht mögen) - richtig wäre "ueberpruefung", nachnameKunde, nachname_kunde...

Wenn Du Optionskästchen "auslesen" möchtest, dann packe das Script immer in die umgebende Optionsfeldliste!! Schaue Dir hier mal dieses Schritt-für-Schritt-Tutorial an. http://acronaut.de/forum48/4162.html

Des Weiteren schaue auf die Bindung der Optionsfeldliste. Kontrollkästchen, haben den Wert 1 (an) und 0 (aus), NICHT SO Optionskästchen. Deine haben 1, 2, 3. Deswegen funktioniert auch nichts. :)

Habe Dir das Konstrukt jetzt mal angelegt, allerdings weiß ich nicht wirklich, wann Du etwas ein-/ausgeblendet haben willst. Das vervollständige bitte selbst. In Deinem Script war einiges doppelt...

Code: Alles auswählen

//1 = Inbetriebnahme
if(this.rawValue == "1"){
    //alles einblenden, was bei Inbetriebnahme erscheinen soll
    Formular1.t2.presence="visible";
    Formular1.seite10.presence="visible";
    //alles ausblenden, was bei Inbetriebnahme NICHT erscheinen soll

        
//2 = Reparatur
}else if (this.rawValue == "2"){
    //alles einblenden, was bei Reparatur erscheinen soll    
    Formular1.t1.presence="visible";
    //alles ausblenden, was bei Reparatur NICHT erscheinen soll


//hier bleibt nur noch übrig die 3 = Überprüfung
}else{
    //alles einblenden, was bei Überprüfung erscheinen soll    
    Formular1.t1.presence="visible";
    //alles ausblenden, was bei Überprüfung NICHT erscheinen soll

}
Dann versuche mal Dein Glück :), schaue Dir in jedem Fall das Tutorial an und melde Dich, wenn's trotzdem irgendwo hakt.
LG Mandy
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

NIBEmann
Beiträge: 50
Registriert: 18.02.2011, 07:50

Erforderliche Felder abfragen und melden

Beitrag von NIBEmann » 29.04.2014, 21:10

Hallo Mandy,

nein, nein bitte weiter Tipp´s geben! Ich nehme das nicht Übel! Nur so kann man Lernen und irgendwann auch anderen helfen.

Sobald man eines der Formulare aussucht wird, soll sich das andere schließen!

Die Kunden sollen aussuchen ob es sich bei der Beauftragung um eine Inbetriebnahme oder Reparatur handelt.

Ich versuche mal deine Tipp umzusetzen.

Vielen Dank!

NIBEmann



Firefox
Beiträge: 47
Registriert: 23.09.2015, 21:57

Erforderliche Felder abfragen und melden

Beitrag von Firefox » 13.02.2018, 10:33

Hallo Mandy,

ich möchte gerne die Sichtbarkeit einer Schaltfläche abfragen, welche zuvor ausgeblendet war und bei Erfolg den Inhalt des Textfeldes_1 in das Textfeld_2 kopieren.
Der Kopiervorgang soll also nicht beim Klick auf die Schaltfläche gestartet werden, sondern sobald diese sichtbar gestellt wird.

Ist die Schaltfläche ausgeblendet, soll der Kopiervorgang unterbleiben.

Wie läßt sich mein Vorhaben eventuell realisieren?

Viele Grüße
Firefox

Benutzeravatar
nele_sonntag
Beiträge: 2742
Registriert: 04.05.2009, 15:12
Wohnort: Frankfurt
Kontaktdaten:

Erforderliche Felder abfragen und melden

Beitrag von nele_sonntag » 13.02.2018, 15:50

Hallo Firefox,

bei allen Fragestellungen ist es hilfreich, wenn Du dein PDF mit zur Verfügung stellst, sodass man nur die Lösung einbauen muss und nicht erst dein Szenario erstellen muss.
Dann kann man direkt am "lebenden Objekt" helfen.

Ansonsten kannst du die Sichtbarkeit deiner Schaltffläche genauso abfragen, wie die Sichtbarkeit aller Objekte mit:

Code: Alles auswählen

Objektname.presence = "visible | invisible | hidden";
Dieses in eine IF-Abfrage gepack, bei der je nach Zustand, die gewünschte Aktion ausgeführt wird.

LG Mandy

Benutzeravatar
nele_sonntag
Beiträge: 2742
Registriert: 04.05.2009, 15:12
Wohnort: Frankfurt
Kontaktdaten:

Re: Erforderliche Felder abfragen und melden

Beitrag von nele_sonntag » 05.04.2018, 10:53

Hallo Firefox,
ist dein Problem gelöst?
Rückmeldungen sind immer erwünscht und zeugt auch vom Respekt dem ggü., der sich die Zeit nimmt, um zu helfen!!
Außerdem ist es natürlich für andere Suchende aufschlussreich.
LG Mandy

pro-docu
Beiträge: 8
Registriert: 13.12.2017, 15:05

Re: Erforderliche Felder abfragen und melden

Beitrag von pro-docu » 08.08.2018, 15:47

radzmar hat geschrieben:
04.03.2014, 11:35
Das würde dann so aussehen.

Code: Alles auswählen

var checkObjects = [Teilformular1.Textfeld1, Teilformular1.Textfeld2],
failedObjects = [];

checkObjects.forEach(function(oObject) {
    if (oObject.isNull && oObject.presence == "visible" && oObject.parent.presence == "visible") {
        oObject.validate.nullTest = "error";
        failedObjects.push(oObject.name);
    } else {
        oObject.validate.nullTest = "disabled";
    }
});

if (failedObjects.length > 0) {
    if (xfa.host.messageBox("Folgende Text-Felder wurden nicht ausgefüllt.\n\n" + failedObjects.join("\n") + "\n\nZum Drucken der Formulare müssen alle farbig markierten Pflichtfelder ausgefüllt oder angekreuzt sein.", "Pflichtfelder sind nicht gefüllt", 1, 0) === 1) {
        app.runtimeHighlight = true;
        xfa.event.cancelAction = 1;
    }
} else {
    xfa.host.print(1, "0", (xfa.host.numPages - 1).toString(), 0, 0, 0, 0, 0);
}
Noch ein Hinweis: Beim Vergleichen mit null, true, false nimmt man === oder !== anstelle von == bzw. !=.
Zudem ist die Methode Object.isNull besser als die zwei kombinierten Bedinungen Object.rawValue === null || Object.rawValue === "".
Hallo radzmar, hallo acronauten,

habe das Beispiel von radzmar in mein Formular eingebaut. Vielen Dank für das Script! Funktioniert soweit auch prima - die ausgeblendeten Pflichtfelder werden nicht geprüft. Nur nach dem Klick auf die Drucken-Schaltfläche kommt zwar die entsprechende Meldung, welche Pflichtfelder noch ausgefüllt werden müssen, aber die Pflichtfelder werden nicht "automatisch" farbig markiert; bzw. erst nachdem ein Feld angeklickt wurde. Gibt es eine Möglichkeit, dass die Pflichtfelder automatisch farbig markiert werden?

VG Robert

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Re: Erforderliche Felder abfragen und melden (Pflichtfelder)

Beitrag von armine » 08.08.2018, 19:56

Hallo Robert, versuche mal die Abfolge:

xfa.event.cancelAction = 1;
app.runtimeHighlight = true;

und wenn das nicht reicht noch

xfa.layout.relayout();

zusätzlich.

vg armine

pro-docu
Beiträge: 8
Registriert: 13.12.2017, 15:05

Re: Erforderliche Felder abfragen und melden (Pflichtfelder)

Beitrag von pro-docu » 09.08.2018, 08:31

Hallo armine,

vielen Dank für die schnelle Rückmeldung! Deine Info hat natürlich wieder (wie immer) den gewünschten Erfolg erzielt :D

Als Rückmeldung für alle Suchenden: Folgende Zeile löst den Farbwechsel automatisch aus:
xfa.layout.relayout();


hier nochmal das komplette Script für den Druck Button:

Code: Alles auswählen

var checkObjects = [
Formular1.Teilformular1.TXT_Objektname1, 
Formular1.Teilformular1.OFG_Objektname2, 
Formular1.Teilformular1.DL_Objektname3, 
],

failedObjects = [];

checkObjects.forEach(function(oObject) {

    if (oObject.isNull && oObject.presence == "visible" && oObject.parent.presence == "visible") {
        oObject.validate.nullTest = "error";
        failedObjects.push(oObject.name.replace(/_|TXT|OFG|DL|NUM/g, " "));    
        //replace(/_|TXT|OFG|DL|NUM/g, " ") ersetzt in der Meldung "_|TXT|OFG|DL|" durch ein Leerzeichen
        
    } else {
        oObject.validate.nullTest = "disabled";
    }

});

if (failedObjects.length > 0) {
    if (xfa.host.messageBox("Folgende Text-Felder wurden nicht ausgefüllt.\n\n" + failedObjects.join("\n") + "\n\nZum Drucken der Formulare müssen alle farbig markierten Pflichtfelder ausgefüllt oder angekreuzt sein.", "Pflichtfelder sind nicht gefüllt", 1, 0) === 1) {
        xfa.event.cancelAction = 1;
        app.runtimeHighlight = true;
        xfa.layout.relayout();
    }

} else {
    xfa.host.print(1, "0", (xfa.host.numPages - 1).toString(), 0, 0, 0, 0, 0);
}


Comadreja
Beiträge: 10
Registriert: 05.08.2011, 05:56

Re: Erforderliche Felder abfragen und melden (Pflichtfelder)

Beitrag von Comadreja » 14.08.2018, 14:32

Hallo Armine,

wäre toll, wenn du mir noch mal helfen könntest:
In meinem Formular sind 6 Tabellen, die je nach Auswahl im DD eingeblendet werden.
Auch wenn nur eine Tabelle eingeblendet ist, fragen die Skripte im "+" und im "-" Button immer alle (ausgeblendeten) Pflichtfelder ab.
Ich habe diese Felder mit deinen Skripten im "Validate Ereignis"

this.validate.nullTest = (!this.rawValue) ? "error" : "disabled" ;
true

und im "Enter Ereignis

this.validate.nullTest = "disabled" ;

im ausgeblendeten Zustand als "Nicht Pflichtfelder" bzw. als "Pflichtfelder" im eingeblendeten Zustand definiert.
Nach vielen Versuchen habe ich es nicht geschafft in den Skripten des "+" und des "-" Buttons das Skript so abzuwandeln, dass die Pflichtfelder nicht abgefragt werden.
Fällt dir eine Lösung zu meinem Problem ein? Oder sehe ich nur den Wald vor lauter Bäumen nicht....?
Viele Grüsse
Comadreja
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Re: Erforderliche Felder abfragen und melden (Pflichtfelder)

Beitrag von armine » 17.08.2018, 17:30

Hallo Comadreja,

da hast du dir mit der Bindung „global“ und dem Setzen der Tabellenanzahl via DDL etwas einfallen lassen. Leider sind die Folgen unschön. Wegen „global“ fliegt dir bei jeder neuen Zeile eine Fehlermeldung um die Ohren – das Wegkicken nervt!
Wegen der DDL hast du keine Wahl, welche Tabelle du gegebenenfalls weglassen willst.
Also lassen wir das?

Nun zum Konstruktiven:
Der Nutzer weiß, dass alles auszufüllen ist. Deswegen reicht es, ihm am Ende auf die Finger zu schauen und im Bedarfsfall Hilfe beizustellen. Die Pflichtfelder werden vor dem Ausdruck bzw. Mailen geprüft, bei Bedarf markiert und gegebenenfalls der Vorgang abgebrochen.

Schau mal, ob dich der Ansatz weiter bringt.
vg armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten