# textfeld enabled/disabled formchecker



## goto; (3. September 2009)

Hallo Community, ich mal wieder.
Folgendes Problem:
Ich habe ein Textfeld, welches enable/disabled werden kann.
Dieses Textfeld wird mit einem formchecker überprüft ob dieser Text enthält.
Es ist ein Pflichtfeld solang es enable ist. Wenn ich es nun jedoch disable und zum nächsten Schritt will, kommt der Formchecker und sagt mir das dieses Feld  nicht leer sein darf. 

Wie bring ich diesem bei das er es nur überprüfen soll wenn es enabled ist`?


----------



## Parantatatam (3. September 2009)

Vielleicht so:

```
function enable(Obj) {
  input = 'input_'+Obj.name;
  
  input = document.getElementById(input);
  
  if(input.disabled == true) {
    input.disabled = false;
  }
  else {
    input.disabled = true;
  }
}
```


```
// ...
<input type="text" name="input_feld1" disabled="disabled" />
<input type="check" name="feld1" onclick="enable(this);" />
// ...
```

Ich weiß nur nicht, wie du dir das mit der Überprüfung gedacht hast. Soll das mit JavaScript oder mit PHP (oder anderer serverseitigen Programmiersprache) realisiert werden?


----------



## goto; (3. September 2009)

Die idee von mir war wohl ziemlich dumm wie mir gerade auffällt, hab es mir jetzt umgedacht. Es liegt ja eigentlich nur daran, dass wenn das Feld disabled ist kein value="" mehr im Textfeld enthalten ist.
Kann ich diesem Textfeld jetzt nicht ein Value verpassen das man aber nicht sieht? Wenn ich jetzt mit einem java ein löschen des textfelds vornehme sobald dieser disable wird. steht in diesem textfeld ja nichts  mehr. gibt es da etwas was ich machen kann? damit unsichtbar in diesem textfeld bsp.: value="-" steht?


----------



## Parantatatam (3. September 2009)

Du willst also erreichen, dass nach dem man ein Textfeld wieder aktiviert, in dem etwas stand als du es deaktiviertest, wieder der gleiche Text steht, aber eben solange das Feld deaktiviert ist der Inhalt nicht zu sehen ist?


----------



## goto; (3. September 2009)

Fast  
Feld kann Deaktiviert werden und auch wieder Aktiviert. 
Nun wird mittels eines Formcheckes überprüft ob dieses Textfeld  Inahlt hat, weil dieses ein Pflichtfeld.
Wenn es also nun Aktiviert ist und Inhalt drin steht ->weiter zur nächstens Seite.
Wenn es Aktiviert ist und kein Inhalt drin steht -> Fehlermeldung"es muss ein wert sein"
Wenn es Deaktiviert ist, soll im hintergrund ein value eingetragen werden der aber nicht gesehen werden kann, damit mir der Formchecker nicht sagt, dass ein Wert eingegeben werden muss. Ich glaub das erklärt es besser.Hoffe es zumindest

So gesagt, suche ich ein mittel um dem textfeld ein hidden value zu verpassen.


----------



## goto; (4. September 2009)

Ok, auf meine Art lässt sich das nicht Lösen, hatte es soweit das ich Inhalt in dem disabled Textfeld hatte, nun wird via

```
function field_empty($value, $msg)
	{
		if (($value) == "")
		{
			$this->error_list[] = array('value' => $value, 'msg' => $msg);
			return false;
		}
		else
		{
			return true;
		}
	}
```
überprüft, ob dieses Textfeld Inhalt hat, hat es zwar, aber der Script sagt mir weiterhin das, dass Textfeld keinen Inhalt hat.

Gibt es eine möglichkeit so einem Script zur Überprüfung zu erklären das dieses Textfeld zwar Disabled ist aber trotzdem Inhalt hat der zu Überprüfen ist?


----------



## Quaese (4. September 2009)

Hi,

vielleicht hilft es, wenn du den Wert des Textfeldes beim Deaktivieren in ein verstecktes Feld schreibst. Dieses kannst du nach dem Absenden des Formulars auswerten.

Beispiel:

```
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
<!--
function manipField(objCB){
  document.getElementById('txtID').disabled = (objCB.checked)? true : false;
  document.getElementById('hidID').value = (objCB.checked)? document.getElementById('txtID').value : "";
}
//-->
</script>
</head>
<body>
<form method="post" action="script.php">
  <input type="checkbox" onclick="manipField(this);">
  <input type="text" id="txtID" name="txtTest" value="">
  <input type="hidden" id="hidID" name="hidTest" value="">
  <input type="submit">
</form>
</body>
</html>
```
 
Ciao
Quaese


----------



## goto; (5. September 2009)

Gute Idee, aber leider nicht die Lösung.

wenn ich dieses Feld deaktiviere übergibt er value an das "hidden" textfeld und der formchecker überprüft diesen.

Jedoch ist jetzt das Problem jetzt,
der formchecker soll ja weiterhin auch das non-hidden feld  überprüfen. Sprich:

"hab leider kaum ahnung von java" Besteht die möglichkeit mit ajax oder java. den wert auf dem Textfeld immer in das hiddenfeld zu laden?

also so:
sichtbares textfeld = $sb
hidden textfeld =$hid

--

$sb / Aktiviert / kein Inhalt eingegeben -> Wert an $hid --> Formchecker meldet fehler
$sb / Aktiviert / Inhalt -> Wert an $hid --> Nächster Schritt
$sb / Deaktiviert / Inhalt ("-") --> Wert an $hid --> Nächster Schritt


----------



## Parantatatam (5. September 2009)

Du musst dem angezeigten Eingabefeld einfach das Ereignis "onchange" zuweisen und dann wie in der Funktion von Quaese überprüfen, ob die zugehörige Checkbox ausgewählt ist oder nicht und dementsprechend jedes Mal neu den Text aus dem dem Eingabefeld in das versteckte Feld laden.


----------



## goto; (5. September 2009)

Gut ok, ich steig gerade nicht mehr durch. Wenn das Textfeld aktiv ist soll es ohne checkbox gehen.
So wie es jetzt ist geht es ja. es würde gehen wenn via ajax der Inhalt aus dem Textfeld in ein anderes das hidden ist geschrieben wird. Ich werd mich mal schlau machen. Danke euch


----------



## Parantatatam (5. September 2009)

Du brauchst in dem Fall aber gar kein AJAX, da du hier nur mit JavaScript arbeiten musst.


----------



## goto; (5. September 2009)

komm immer wieder nur auf die erkenntnis das man entweder ein checkbox mit onclick="" oder ein button betätigen muss damit die daten aus dem einen textfeld in das andere übertragen wird. Irgendwie steig ich da nicht durch. Javascript ist nicht mein gebiet sry


----------

