• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Zeichenlänge prüfen funktioniert nicht

maddoc

New member
Hallo Mitglieder,

ich habe ein Feld, das genau zwei Zeichen beinhalten soll.
Das soll geprüft werden, nachdem in das Feld was eingetragen wurde. ich habe es so versucht:
Code:
if (this.getField("spa.dat._begj_").value.length < 2)
{
	app.alert ("alerttext");
}
else
app.alert("lalala");

und so:

Code:
var str = this.getField("spa.dat._begj_").value;
var n = str.length;

if (n < 2)
{
	app.alert ("alerttext");
}
else
app.alert("lalala");
{

Beides funktioniert nicht. kann mir einer sagen wieso? er gibt mir nur das else zurück.
 
kannst du uns sagen, was getField macht?
Ich glaube, das ist PDF-JS und ths.getField() gibt ein Eingabefeld zurück.

@maddoc: was bekommst du denn, wenn du dir per alert() den eingegebenen Wert ausgeben lässt? Kommt dann das richtige.

PS:
das genau zwei Zeichen beinhalten soll.
Das Fragst du auch gar nicht ab. Wenn du das möchtest, müsstest du
Code:
if (n !== 2){...}
schreiben.
 
this.getField ("..").value holt den Inhalt des Feldes. Ja es ist ein PDF.

Wenn ich mir den Inhalt zurückgeben lassen will mit:

Code:
var str = this.getField("spa.dat._begj_").value;
var n = str.length;
app.alert(n)
spuckt er nur "undefined" aus.

Mit dem Vorschlag n!== 2
Code:
var str = this.getField("spa.dat._begj_").value;
var n = str.length;

if (n !== 2)
{
	app.alert ("alerttext");
}
else
app.alert("lalala");

bringt er immer den "alerttext".
 
Ist es nicht egal wie ich meine variable benenne? Die könnte auch bla heißen.
Das str ist noch übrig von einem code aus dem netz der mein Problem beheben sollte.

Der Code an sich funktioniert ja nicht und sagt dem Nutzer nicht, dass er zu wenig zahlen eingegeben hat.

Hier mal eine ausführlich Erläuterung:
Ich habe ein Datum, dass als MM/JJ dargestellt ist. Der Monat und das Jahr sind jeweils eine eigene Variable (das ist leider dem Statistikprogramm geschuldet, in das die Daten später hochgeladen werden).
Nun will ich aber sicher gehen, dass auf jedenfall immer zwei Zahlen eingegeben werden: also z.B: 0816 und nicht 816.
Würde ich einen Code kennen, der eine führende Null automatisch dranstellt würde ich auch das nehmen.
 
Ist es nicht egal wie ich meine variable benenne?

Missverständnis ...

nur String und Array (und andere Listen-Typen) haben in JS die Eigenschaft length. Wenn also variable.length undefined ist, dann existiert in dem (temporären) Objekt die Eigenschaft length nicht. Ergo ist variable dann weder ein String, noch ein Array (und auch kein primitiver Typ wie null)
 
Ah guter Hinweis, deshalb habe ich dazu auch nichts gefunden.

Hast du denn nun auch eine Idee wie ich mein Problem lösen kann wenn nicht über length?
 
ja das Format ist als Zahl festgelegt
wenn du weißt, wieviele monate es gibt und wieviel tage ein monat haben kann bist du doch schon wesentlich besser in der plausibilitätsprüfung als mit 2-stelligen strings.
ich vermute mal, wenn du das feld als datum festlegst, können nur gültige werte eingegeben werden.
 
wenn du weißt, wieviele monate es gibt und wieviel tage ein monat haben kann bist du doch schon wesentlich besser in der plausibilitätsprüfung als mit 2-stelligen strings.
ich vermute mal, wenn du das feld als datum festlegst, können nur gültige werte eingegeben werden.

naja ich wollte das mit nem JS code lösen, da ich im Format schon ein benutzerdefiniertes JS Format angegeben habe, sodass ich kein Datum als yy oder mm festlegen kann.
 
Wenn das Teil eine Zahl ist, bekommst du da niemals eine führende Null im JS. Ob die weiterverarbeitet wird, weiß ich nicht - ich wage stark, das zu bezweifeln.

An welcher Stelle brauchst du denn die führenden Nullen überhaupt? Ich glaube nicht, dass ein nachgeschlossenes System (Statistikprogramm?) sowas benötigt. Vor allem nicht, wenn Monat und Jahr sowieso in separaten Variablen gespeichert werden (was ja auch nur sinnvoll ist und nichts negatives) - und wenn doch, ist es wahrscheinlich heillos veraltet...

ich vermute mal, wenn du das feld als datum festlegst, können nur gültige werte eingegeben werden.
Ich glaube nicht, dass es einen Datumstyp gibt, der nur Monat und Jahr beinhaltet.

PS:
hat vier Stellen...
 
Wobei Monat und Jahr jetzt auch nicht so besonders schwer zu validieren sind: Monat Ganzzahl von 1 bis 12 und Jahr irgendeine Ganzzahl.
 
Ich glaube nicht, dass ein nachgeschlossenes System (Statistikprogramm?) sowas benötigt. Vor allem nicht, wenn Monat und Jahr sowieso in separaten Variablen gespeichert werden (was ja auch nur sinnvoll ist und nichts negatives) - und wenn doch, ist es wahrscheinlich heillos veraltet...
Das wird mit SAS ausgewertet, alt ist das wohl nicht.

Ich glaube aber ihr versteht mein Problem nicht.

ich will doch nur, dass der Nutzer gezwungen ist auf jedenfall zwei Zahlen als Monat und Jahr anzugeben.

PS:
0816
hat vier Stellen...
PS: das weiss ich selbst, so soll es ja auch aussehen, aber jetzt ist auch "816" möglich und das will ich eben nicht.

Validiert habe ich das natürlich auch (1-12) aber dann kann man immer noch nur 1 reinschreiben und nicht 01.
 
Validiert habe ich das natürlich auch (1-12) aber dann kann man immer noch nur 1 reinschreiben und nicht 01.
Warum willst du unbedingt den Monat mit führender Null? Das ist lediglich eine Ausgabeformatierung.

Du kannst das natürlich zu einem Textfeld machen, aber dann wird die Monatsvalidierung halt viel komplizierter.
 
ich will das nicht, es wurde mir so vorgegeben.

allerdings könnte man das gleiche Spiel auch für das Jahr machen: angenommen jemand tippt eine "1" ein (als Jahr) es könnte nun sein, dass er "2001" oder "2010" meint. deshalb sollen auf jedenfall zwei zahlen hineingeschrieben werden sollen, weil die dann im späteren verlauf noch mit anderen Datumsangaben validiert werden müssen.
 
alt ist das wohl nicht.
Dann ist es schlecht geschrieben, wenn es das braucht.
Ich glaube aber ihr versteht mein Problem nicht.
Das kann gut sein. Ich verstehe aber vor allem den Sinn nicht.
PS: das weiss ich selbst, so soll es ja auch aussehen, aber jetzt ist auch "816" möglich und das will ich eben nicht.
Ist das jetzt ein Eingabefeld oder zwei? Oder wo erscheint "816"?
es wurde mir so vorgegeben.
Von wem und warum?
angenommen jemand tippt eine "1" ein (als Jahr) es könnte nun sein, dass er "2001" oder "2010" meint.
Wieso sollte da jemand 2010 meinen? Es könnte wenn dann 2001, 1901, 1801, ... sein. Aber dabei helfen dir dann zwei Stellen auch nicht...
 
Zurück
Oben