WinFuture-Forum.de: Zeitkontrolle - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Zeitkontrolle Java


#1 Mitglied ist offline   Party 

  • Gruppe: aktive Mitglieder
  • Beiträge: 501
  • Beigetreten: 16. Januar 04
  • Reputation: 0

geschrieben 04. Juni 2006 - 16:05

Hi leute ich hab eine kleine frage

und zwar ich hab ein input field in html und brauche eine js abfrage.
mein problem das Datum field ist dd.mm z.b 06.12 und ich brauche jetzt eine abfrage das wenn die eingabe z.b " 32.13" ist das er eine fehlermeldung bring. also dass vor dem punkt nur 01-31 erlaubt ist und im 2ten nur 01-12.

kann mir jemand bitte helfen


Hab das hier in einem Forum gefunden da einer schon einmal das selbe problem hatte

	 if(document.Eingabe.caEintreff.value == "")
	{
		Fehlermeldung += "Datensatz fehlt: ca. Eintreffzeit\n";
	}
	 else
	{
	function zeitCheck(z){ 
	r=new RegExp('[^0-9]','g'); 
	if(z.length==4&&!r.test(z)){ 
	h=Number(z.substr(0,2)); 
	m=Number(z.substr(2)); 
	if(h<24&&m<60)return true 
	} 
		Fehlermeldung += "Fehler: ca. Eintreffzeit\n";
	return false; 
	} 
	zeitCheck(document.Eingabe.caEintreff.value); 

	}


aber der codes sagt z.b nur aus wenn er eine zahl hat 1354 das die ersten 2 zahlen nur bis 24 gehn dürfen und die letzen 2 nur bis 60. da ich mich aber in javascript nicht so guat auskenne bin ich leider zurzeit noch an hilfe gebunden da ich nicht weis wie ich da den punkt einsetze der in meiner abfrage ist und ich ihm sage das er nur 01-31 und 01-12 haben darf.

mfg party
0

Anzeige



#2 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

geschrieben 04. Juni 2006 - 18:34

Moin,

aufspalten, nach int konvertieren, Zahlenbereich prüfen:
function zeitCheck(z)
{ 
	h=Number(z.substr(0,2));
	dot= z.substr(2,1);
	m=Number(z.substr(3)); 
	if(h >= 0 && h<24 && m >= 0 && m<60)
		return true 
	else
		return false; 
}

Das gibt jetzt nur 'true' zurück für Werte von 00x00 bis 23x59. Das 'x' darf jedes beliebige Zeichen sein,
wenn du da einen Punkt haben willst, dann füge in die if-Bedingung noch ein
&& dot=="."

ein.
Das sollte es tun (minus Flüchtigkeitsfehler :) )
0

#3 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 04. Juni 2006 - 19:22

Wie wär's mit

result =z.match('([0-9]{1,2})(\.|-)([0-9]{1,2})');
if (result.matches()) {
  h=Number(resul.$0);
  m=Number(result.$2);
  [...]
}


Du kannst Syntaxprüfung, Längenprüfung und splitten in einem Rutsch erledigen und kriegst nebenbei noch etwas mehr Flexibilität.

Dieser Beitrag wurde von Rika bearbeitet: 04. Juni 2006 - 19:22

Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#4 Mitglied ist offline   Party 

  • Gruppe: aktive Mitglieder
  • Beiträge: 501
  • Beigetreten: 16. Januar 04
  • Reputation: 0

geschrieben 04. Juni 2006 - 20:36

@MNG
danke jetzt funktionierts

könntest du mir den Code mal einwenig Kommentieren das ich das nechstesmal alleine kann?
function zeitCheck(z)  //funktion wird festgelegt (warum eigendlich in der klammer (z) brauch in meinem fall nicht oder?
{ 
	h=Number(z.substr(0,2));  //position von h - z.substr postition (aber weiso 0,2) wie werden da die buchstaben gezählt?
	dot= z.substr(2,1); //positon (gleiche frage wie oben)
	m=Number(z.substr(3)); //positon (wieso da nur 3?)
	if(h >= 0 && h<24 && m >= 0 && m<60)  // if abfrage ist klar
		return true 
	else
		return false; 
}


@Rika
nimm lieber das obere beispiel da ich mich dort wenigstens einwenig auskenne
da ich ein kompletter js noob bin :) auser du kannst mir das erklären
wäre natürlich spitze

danke mfg party
0

#5 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

geschrieben 04. Juni 2006 - 21:04

Klaro:
function zeitCheck(z)  //funktion wird festgelegt, ein parameter (z), der den zu testenden String enthält
{ 
	h=Number(z.substr(0,2));  //h wird gesetzt als der teil-string von z, der beim nullten zeichen beginnt und 2 zeichen lang ist
	dot= z.substr(2,1); //positon (dot wird gesetzt als der teil-string von z, der beim zweiten zeichen beginnt und 1 zeichen lang ist
	m=Number(z.substr(3)); //positon (m wird gesetzt als der teil-string von z, der beim dritten zeichen beginnt und bis zum ende von z geht
	if(h >= 0 && h<24 && m >= 0 && m<60)  // if abfrage ist klar
		return true 
	else
		return false; 
}

Rika verwendet einen sog. regulären Ausdruck. Dieser ist im Grunde ein Muster, er wird wie eine Schablone über den Ausgangsstring gelegt:
//das vergleichsergebnis zwischen dem regulären ausdruck und dem string 'z' ist 'result':
result =z.match('([0-9]{1,2})(\.|-)([0-9]{1,2})');
//der reguläre ausdruck setzt sich zusammen aus:
// [0-9]{1,2} = eine oder zwei ziffern (also, 1 oder 2 elemente aus der menge 0-9)
// \.|- = ein punkt (als \. geschrieben, da sonderzeichen) oder ein bindestrich
// und noch mal eine oder zwei ziffern

//wenn z diesem muster entspricht....
if (result.matches())
{
  //dann wird h auf die erste match-gruppe gesetzt (eine oder zwei ziffern)
  h=Number(resul.$0);
  //und m wird auf die dritte match-gruppe gesetzt (auch eine oder zwei ziffern)
  m=Number(result.$2);
  
 //jetzt käme hier derselbe vergleich wie 'alten' skript, als h zwischen 0 und 23 und m zwischen 0 und 59
}

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0