# JSF Prob mit xhtml / Bean / JS



## Programmer111 (6. Aug 2012)

Morgen Leute,

ich habe ein Problem bei meiner Web Anwendung.

Es handelt sich um ein Input field, in welches man eine Uhrzeit eingibt.
In der Bean wird der eingetragene Wert übergeben und bearbeitet.
Bevor der Wert jedoch übergeben wird, möchte ich zuerst mit javascript festellen, ob es sich um Buchstaben handelt.

Das Problem ist, dass ich irgendwie die neue Uhrzeit im JS nicht gesetzt bekomme...Code:

	 <script type="text/javascript">
	function noLetters(ID){
		var uhrzeit= inUhrzeitTermin.getElementByID(ID).value();
		var ersteUhrzeit= uhrzeit.substring(0, uhrzeit.indexOf(":"));
		var zweiteUhrzeit= uhrzeit.substring(uhrzeit.indexOf(":")+1);

// Test
		return uhrzeit= "12:12";

		if(isNaN(uhrzeit)){
			if(isNaN(ersteUhrzeit)){
				uhrzeit=' ';
			}
			if(isNaN(zweiteUhrzeit)){
				uhrzeit=' ';

			}
			return uhrzeit;
		}

Da ich ja bei einer Uhrzeit nen ":" drin habe, der auch als Zeichen zählt muss ich den Fall ja mit einbeziehen, daher die if Abfragen.

Kann mir da jmd helfen, warum das nicht funktioniert? Ich weiss ich n JS Problem aber betrifft ne Java Web Anwendung mit ner verkoppelten Bean im Hintergrund.
xhtml Code sieht so aus:


<p:inputText id="inUhrzeitTermin" 
					value="#{cc.attrs.backingBean.uhrzeit}" 
					disabled="#{cc.attrs.readonly || (cc.attrs.mitDelegieren &amp;&amp; cc.attrs.backingBean.terminDelegieren)}"
					styleClass="time-input" label="#{msgs.uhrzeit}" maxlength="5" onBlur="noLetters(inUhrzeitTermin)">
					<p:ajax event="blur" process="inUhrzeitTermin"  listener="#{cc.attrs.backingBean.onTimeChange}" update="inUhrzeitTermin"/>
			</p:inputText>

Gruss & danke


----------



## Sym (6. Aug 2012)

Wenn ich Dich richtig verstehe, möchtest Du nur prüfen, ob es sich um eine valide Uhrzeit handelt, oder? Und was soll im Fehlerfall passieren? 

Warum nutzt Du keinen Validator?


----------



## Programmer111 (6. Aug 2012)

genau.
weiß ich nicht wie das funktioniert.
Mein JS springt nur überhaupt nicht an, obwohl die Logik stimmt.
Wieso funktioniert mein neu Setzen nicht?


----------



## jwiesmann (6. Aug 2012)

Wie Sym schon sagt, solltest du vielleicht einen Validator oder Listener benutzen.
Du benötigst eigentlich nur in absoluten Ausnahmefällen eigenes Javascript.
Davon einmal abgesehen ist dein javascript nicht korrekt....

schau dir mal
PrimeFaces - ShowCase
oder 
PrimeFaces - ShowCase
an.

Zum Javascript:
dein 
	
	
	
	





```
onBlur="noLetters(inUhrzeitTermin)"
```
 wird nie funktioniere, da dort Anführungszeichen fehlen.

```
inUhrzeitTermin.getElementByID(ID).value();
```
macht gar keinen Sinn und ist syntaktisch fehlerhaft (kleines Id, nicht ID). Besser wäre

```
document.getElementById(ID).value();
```
...
aber wie dem auch sei, schau dir lieber die Beispiele an und verzichte auf JS


----------



## Programmer111 (6. Aug 2012)

Danke für eure Antworten.

In der Bean habe ich bereits einen Validator.
JavaScript benutze ich nur,damit man keine Zeichen in das inputfield eintragen kann.

Das Problem ist, dass ":" auch ein Zeichen ist und das möchte ich mit dem JavaScript handeln.

Gruss


----------



## JimPanse (6. Aug 2012)

Regex


----------



## jwiesmann (6. Aug 2012)

Programmer111 hat gesagt.:


> Danke für eure Antworten.
> 
> In der Bean habe ich bereits einen Validator.
> JavaScript benutze ich nur,damit man keine Zeichen in das inputfield eintragen kann.
> ...



Dafür gibts auch schon tolle Sachen wie z.B.
PrimeFaces - ShowCase


----------

