# [jQuery] Function eines Buttons wechseln



## VanHellsehn (21. März 2010)

Hi,
Ich habe mir eine jQuery-Script geschrieben das den Status eines Kommentars ändert. Also zum Beispiel von Gesperrt zu Enstperrt etc...
Nun wenn ich jetzt zb. auf Sperren klicke soll die function auf Ensperren wechseln.
Ich habe jeweils so einen Button:

```
<button onclick="changeState(3, 32)">Sperren</button>
```
Und die function soll auf folgendes wechseln:

```
<button onclick="changeState(2, 32)">Entsperren</button>
```
Also den den Text kann ich ja mit folgendem Code ändern:

```
$("button").text("Entsperren");
```
Nur wie kann ich die Onlcik functio ändern?
Jemand eine Idee?


----------



## queicherius (21. März 2010)

Warum vergibst du die Funktion des Buttons nicht oben im jQuery?

```
toggle
```
heißt hier das Stichwort.


----------



## VanHellsehn (21. März 2010)

queicherius hat gesagt.:


> Warum vergibst du die Funktion des Buttons nicht oben im jQuery?
> 
> ```
> toggle
> ...


Ich weiß nicht wie ich Sie mit jQuery vergeben solte. Da ich mehrere Buttons auf einer Seite habe und bei jedem die Parameter anders sind. Eine idee dafür`?
Toggle ist eine gute Idee aber ich habe zum Beispiel einen Button wo Aktivieren drauf steht und wenn ich drauf geklickt habe soll da Sperren (mit der enstprechenden Function) stehen und wenn ich da drauf geklickt habe soll entsperren kommen. Und wenn ich dann wieder auf Entsperren klicke soll wieder Sperren kommen. Verstanden? ^^
Also kommt die eine Function ab und zu mal vor bzw nur dann wenn der Artikel noch nciht aktiviert ist.
Eine gute Idee wie ich das machen könnte?


----------



## Tomek_FFM (22. März 2010)

Sowas in der Art?


```
<script src="scripts/jquery-1.4.2.js" type="text/javascript"></script>

<script>
	function toggleIt(id) {
		var newText;
		var newStatus;
		if($("#"+id).attr("value") == "Entsperren") {
			newText = "Sperren";
			newStatus = "";
		} else {
			newText = "Entsperren";
			newStatus = "disabled";
		}
		$("#"+id).attr("value", newText);
		$("#"+id+"Area").attr("disabled", newStatus);
	}
</script>

<input id="myButton" type="button" onclick="toggleIt(this.id)" value="Entsperren"/>
</br>
<textarea id="myButtonArea" disabled="disabled">Ich bin ein Kommentar.</textarea>
```


----------



## queicherius (22. März 2010)

Fast 

Ich dachte an so was: 


```
<html><head><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

<script>
$(document).ready(function() {

$(".myButton").toggle(
  function() {
    id = $(this).attr('id');
		$(this).attr("value", "Sperren")
		$("#"+id+"_Area").attr("disabled", "");
	},
  
  function() {
    id = $(this).attr('id');
		$(this).attr("value", "Entsperren")
		$("#"+id+"_Area").attr("disabled", "disabled");
	}
  );
});
</script>

</head>
<body>

<textarea id="b1_Area" disabled="disabled">Ich bin ein Kommentar.</textarea><br>
<input class="myButton" id="b1" type="button" value="Entsperren"/><br><br><br>

<textarea id="b2_Area" disabled="disabled">Ich bin ein Kommentar.</textarea><br>
<input class="myButton" id="b2" type="button" value="Entsperren"/><br><br><br>
</body></html>
```

Das hat den Vorteil, dass du mehrere Textareas auf einer Seite haben kannst.

Außerdem kannst du dein changeState (was auch immer das macht) gut dazu einbauen!


----------



## VanHellsehn (22. März 2010)

Ich struckturiere gerade um.. ich melde mich, mit meinem Code, wieder, da ich glaube das ihr nicht ganz verstanden habt was ich genau meine ^^
Aber vielen dank schon mal!


----------

