# javascript und jsf



## Ruben (7. Nov 2006)

Hallo,

ich habe ein Problem mit Javascript und meinem JSF-Projekt. Ich habe ein umfangreiches Formular welches ich mit Javascript auf Falscheingaben prüfe. Das Javascript wird dann direkt im CommanButton aufgerufen und gibt einen boolschen Wert zurück, demzufolge das Formular dann abgeschickt wird oder nicht. Nun möchte ich nachdem Abschicken den CommandButton disablen. Und genau das bekomme ich nicht hin...ich sollte dazusagen das es einige Zeit dauert den Request zu verarbeiten deswegen will ich den Button disablen. Soweit ein Teil meines Codes...


```
<script language="JavaScript" type="text/javascript">
    <!--
    function checkForm(){
       if(....){
           return false;        // formular zurückhalten
       }else{
          return true;          // formular abschicken
       }
    // -->
</script>


<h:form id="insertForm">
     ........
     <h:commandButton value={formBean.inserData} name="Abschicken" onclick="return checkForm();"/>
</h:form>
```

Wenn ich nun versuche nach dem abschicken den Button zu disablen dann wird das ignoriert:


```
<h:commandButton value={formBean.inserData} name="Abschicken" onclick="return checkForm(); this.disabled=true"/>
```


```
<h:commandButton value={formBean.inserData} name="Abschicken" onclick="return checkForm(); disableButton();"/>
```

oder als extra Funktion hatte ich es auch schon...mit dem selben Ergebnis. Wenn ich den Button in meiner checkForm()-Funktion disable dann wird das Formular natürlich nicht mehr abgeschickt.
Ich weiß nicht mehr weiter und mit Javascript kenne ich mich nicht so sehr gut aus. Ich hoffe einer von Euch hat einen Tipp für mich.

Ruben


----------



## HLX (8. Nov 2006)

Vielleicht liegts am vorzeitigen return.  ???:L Probier mal mal:


```
<h:commandButton value={formBean.inserData} name="Abschicken" 
      onclick="var c = checkForm(); if(c) {this.disabled=true}; return c"/>
```


----------



## Ruben (8. Nov 2006)

Hallo HLX,

das funktioniert leider auch nicht, da der Button disabled wird bevor submitted werden soll, was dadurch dann nicht mehr geht. So erkläre ich mir das zumindest.

Vielleicht mache ich es über einen zweiten Button auch wenn das irgendwie rumgefuscht ist, aber ich habe den Eindruck das Javascript und JSF nicht so gut mit einander können, das ist bei mir immer irgendwie Glückssache ob etwas funktioniert oder nicht...

Ruben


----------



## Molloy (9. Nov 2006)

Versuch mal onmousedown anstatt onclick.
JSF hängt (was commandButton und commandLink angeht) stark von Javascript ab und implementiert da seinen eigenen Code auf onclick.

Schau dir mal den Quelltext deiner Seite im Browser an, ob der Javascript-Teil richtig übernommen wird.


----------



## Ruben (10. Nov 2006)

Hallo,

der JavaScriptteil wird im HTML-Quellcode richtig übernommen.

Onmousedown halt ich für keine gute Idee, da dann wieder (logischerweise) der Button disabled wird bevor submitted wird, was dann wiederum nicht geht...

Das JSF so einiges ins onClick reinhaut weiß ich, aber dennoch dachte ich es gibt eine Möglichkeit das hinzukriegen...

Ich habe es jetzt über einen zweiten Hidden-Button gemacht, aber so glücklich bin ich mit der Lösung auch nicht...ist mir wieder  zu sehr rumgewurschtelt.

Ruben


----------

