Inhalt einer Textarea

dg87

Erfahrenes Mitglied
Hallo, habe folgenden teil code hier:

PHP:
<script>
 var school = document.getElementById('school'); //holt tabelle school
        var area = school.getElementsByTagName('textarea'); // holt davon die textarea

 if(area.value == '')
        {
            alert("Schulinformationen fehlen");
        }

</script>
// Dieser Teil ist unten in html drinnen.
HTML:
<table id="school">         
         <font size="5"><u>Berufsschule (Unterrichtsthemen)</u></font><br>
          <br>
          <br>
          <textarea cols="80" rows="10" name="schultext"  value="{::-schultext-::}"></textarea>
</table>

Ich hole mir also aus dem table school die textarea. und möchte abfragen ob die textarea leer ist oder nicht.
aber ich hab gehört mit value kann ich das ned abfragen.

Bitte um hilfe
 
Zuletzt bearbeitet:
Hi,

zunächst - du kannst den Inhalt über die Eigenschaft value abfragen. Soll beim Laden bereits Text eingetragen sein, wird er zwischen öffnendes und schliessendes Tag geschrieben.

Die Methode getElementsByTagName liefert ein Array zurück. Die enthaltenen Werte musst du über den zugehörigen Index abfragen. Die gewünschte Textarea steht an erster Stelle und hat somit den Index 0.
Code:
area[0].value
Firefox braucht ausserdem eine valide Tabellenstruktur, damit getElementsByTagName korrekt funktioniert.
Code:
<table id="school">
  <tr>
    <td><textarea cols="80" rows="10" name="schultext" >{::-schultext-::}</textarea></td>
  </tr>
</table>
Ciao
Quaese
 
Zuletzt bearbeitet:
ne das haut auch ned hin.
mit dem value wert und den folgenden template hat das nichts zu tun anscheinend. wenn ich es dahin tue wo du es hast, sprich auserhalt der tags, dann steht es vorhaus aus drinnen das template und das will ich ned.

das andere funktioniert auch alles mit morzilla (input types) die auf der selbe abfrage basis stehen, jedoch nur das textarea will ned

hier nochmal alles in einem:

Code:
<script>
 if(area[0].value == '')
        {
            alert("Schulinformationen fehlen");
        }
</script>

HTML:
<table id="school">         
         <font size="5"><u>Berufsschule (Unterrichtsthemen)</u></font><br>
          <br>
          <br>
          <textarea cols="80" rows="10" name="schultext"  value="{::-schultext-::}"></textarea>
</table>
 
Hi,

eine Textarea besitzt kein value-Attribut, das innerhalb des HTML-Tags notiert wird - sieht SelfHTML. Es gibt jedoch eine JavaScript Eigenschaft value, mit der der Inhalt einer Textbox abgefragt werden kann (siehe ebenfalls SelfHTML).

Wenn du bei Beginn keinen Inhalt in der Textbox haben willst, solltest du ihn einfach weglassen. So würdest du sicherlich auch bei einem Textfeld (input/type=text) vorgehen.

Folgendes Konstrukt funktioniert bei mir:
Code:
<html>
<head>
<meta name="author" content="Quaese">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
<!--
function derTest(){
  var school = document.getElementById('school'); //holt tabelle school
  var area = school.getElementsByTagName('textarea'); // holt davon die textarea

  if(area[0].value == ''){
    alert("Schulinformationen fehlen");
  }
}

//-->
</script>
</head>
<body>
<button onclick="derTest();">derTest</button>
<table id="school">
  <tr>
    <td>
      <font size="5"><u>Berufsschule (Unterrichtsthemen)</u></font><br>
      <br>
      <br>
      <textarea cols="80" rows="10" name="schultext"></textarea>
    </td>
  </tr>
</table>
</body>
</html>
Solltest du den Inhalt bereits beim Laden des Dokuments prüfen lassen wollen, so solltest du dies im onload-Event machen, da vorher das Element noch nicht existiert.
Code:
window.onload = function(){
  // Prüfroutine
  derTest();
}
 
Code:
 alert("test"); 
  	 var check = 0;  
  	 var common = document.getElementById('common');  // holt die Tabelle mit dem Common Teil
         var fields = common.getElementsByTagName('input'); // Holt entsprechend davon die input types
        
        var school = document.getElementById('school');
        var area = school.getElementsByTagName('textarea');
        
        if(area[0].value="")
         {
            alert("no school value");
         }
        
        for(i=0; i < fields.length; i++)  //zählt alle input types ab
  	    { if(fields[i].value == '') // wenn ein input type kein Wert enthält
  	      {
  	            alert("Das Feld "+fields[i].name+" muss gefüllt sein.");
  							var check = 1;
                
  	      }			
  	    }

Hier oben führt er nur den Test aus, die anderen Sachen funktionieren dann auch nicht mehr. Wenn ich jedoch die variable school und area ausklammere und den entsprechenden if konstrukt weglasse dann geht das andere hier, was genauso aufgebaut ist im prinzip.

Hier beide Sachen in html:

HTML:
<table id="common">
       <tr>
          <td></td>
          <td><font size="2">Name:</font></td>
          <td><input type="text" name="name" value="{::-name-::}">
          <td>&emsp; &emsp; &emsp;</td>
          <td>&emsp; &emsp; &emsp;</td>
          <td>&emsp; &emsp; &emsp;</td>
      
   
        
          <td><font size="2">Ausbildungswoche:</font></td>
       <tr>
          <td></td>
          <td><font size="2">Ausbildungsabteilung:</td>
          <td><input type="text" name="abteilung" value="{::-abteilung-::}"></td>
          <td>&emsp; &emsp; &emsp;</td>
          <td>&emsp; &emsp; &emsp;</td>
          <td>&emsp; &emsp; &emsp;</td>
         
        
             
          <td><font size="2">vom </font><input type="text" name="vomdate" value="{::-vomdate-::}"></td>
        <tr>
          <td></td>
          <td><font size="2">Ausbildungsjahr:</td>
          <td><input type="text" name="ausbildungsjahr" value="{::-ausbildungsjahr-::}"></td>
          <td>&emsp; &emsp; &emsp;</td>
          <td>&emsp; &emsp; &emsp;</td>
          <td>&emsp; &emsp; &emsp;</td>
         
     
         
         
          <td><font size="2">bis&emsp;</font><input type="text" name="bisdate" value="{::-bisdate-::}"></td>
   </table>

<table id="school">       
         <font size="5"><u>Berufsschule (Unterrichtsthemen)</u></font><br>
          <br>
          <br>
          <textarea cols="80" rows="10" name="schultext"></textarea>
</table>

Also muss ein Fehler schon bereits oben sein, das gibts doch nicht, dass es bei dir hinhaut und bei mir nicht :-(
 
Hi,

mit dieser Anweisung
Code:
if(area[0].value="")
weist du dem Inhalt der Textbox einen Leerstring zu.

Korrekt muss es so lauten
Code:
if(area[0].value=="")
Ausserdem ist die Textarea noch immer nicht in ein valides Tabellenkonstrukt eingebettetet, was bei mir zur Folge hat, dass der Firefox streikt.

Ciao
Quaese
 
So erstmal vielen vielen Dank für die Unterstützung,
die == zeichen waren bei mir falsch, funtzte aber trotzdem nicht.

aber ich habe nun das table unten rausgenommen und die id direkt beim textarea eingefügt, und dann hats funktioniert. Ist ja auch im prinzip ein schmarn, für eine textares eine table mit id zu machen, was man ja nur macht, wenn man genügend felder drinnen hat.

Nochmals vielen Dank
 
Hi,

seit meinem ersten Beitrag habe ich dich darauf hingewiesen, dass es an der fehlerhaften Tabellenstruktur liegen kann.

Ciao
Quaese
 

Neue Beiträge

Zurück