Funktion automatisch auf allen Felder ausführen

Hi,

Hast du die Möglichkeiten, den Feldern ein Attribut mit zu geben?

In diesem Fall könntest du das Attribut alt zum Beispiel setzen und ihm den Wert must zuweisen. In der Funktion wird zusätzlich auf diesen Wert geprüft.

Beispiel:
Code:
<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 checkIt(objForm){
  var arrElem = objForm.elements;
  for(var i=0; i<arrElem.length; i++){
    if((arrElem[i].type == "text") && (arrElem[i].alt == "must") && (arrElem[i].value == ""))
      return false;
  }
  return true;
}
 //-->
</script>
</head>
<body>
<form action="get_formdata_test.php" onsubmit="return checkIt(this);">
  <input type="text" name="txt_1" value="1" alt="must">
  <input type="text" name="txt_2" value="">
  <input type="text" name="txt_3" value="3" alt="must">
  <input type="text" name="txt_4" value="" alt="must">
  <input type="submit" value="senden">
</form>

</body>
</html>

Im Übrigen würde ich auf eine zusätzliche Prüfung auf der Serverseite nicht verzichten. Die clientseitige Überprüfung mit JS sollte lediglich ein zusätzliches Feature sein.


Ciao
Qiaese
 
Hallo

Ich möchte die checjIt Funktion wieder verwenden jedoch ein bisschen anders.

Javascript:
function checkIt(objForm)
{
  alert(objForm);
  var arrElem = objForm.elements;
  for(var i=0; i<arrElem.length; i++)
  {
	  if((arrElem[i].type == "text") && (arrElem[i].alt == "must") && (arrElem[i].value != ""))
	   {
		//document.getElementsByName(arrElem)[i].style.disabled = false;   
		document.arrElem.style.disabled=false;
	   }
  }
}

HTML:
<html>
.....
<form method='post' action='insert.php?box=$id' onsubmit='return checkItdez(this);' name='formular'>
...
<?php
echo"<input type='text' $desabled size='5' maxlength='5' width='30' value='$note' name='$KID$na' class='decimal maximum6' style='visibility:visible' alt='must'/>";
?>
....
<input name="Bearbeiten" type="button" onClick="javascript:showbutton(); checkIt(formular);" value="Bearbeiten" style="text-align:center;color: rgb(255, 102, 0); font-size: 10pt;"/>
....
</form>
...
</html>

Wenn ein bestimmter Button gewählt ist, sollen alle Textfelder aus eine bestimmten Formular und alle Selectboxen von desabled auf enabled stellen (Button ist im selben Formular wie die Textfelder und Selectboxen).
Alle Felder sind standard auf desabled.



Mein Code funktioniert nicht ganz. Kann mir jemand sagen warum? was genau falsch ist?
 
Zuletzt bearbeitet:
Hi,

du kannst der Funktion die Referenz auf den Button übergeben. Dort kannst du prüfen, ob der Wert des Button mit dem gewünschten übereinstimmt. Im Misserfolgsfall verlässt du die Funktion wieder.

Anschliessend kannst du dich anhand der übergebenen Referenz zum Formular-Objekt hangeln. Von dort aus erstellst du wie gehabt das elements-Array, durchläufst dieses und setzt wie gewünscht die Eigenschaft disabled.

Beispiel:
Code:
<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 checkIt(objBtn){
  // Falls nicht der richtige Button gedrückt wurde -> Funktion verlassen
  if(objBtn.value != "Bearbeiten") return false;

  var arrElem = objBtn.form.elements;

  for(var i=0; i<arrElem.length; i++){
    if((arrElem[i].type == "text") && (arrElem[i].alt == "must") && (arrElem[i].value != "")){
      arrElem[i].disabled = false;
    }
  }
}
 //-->
</script>
</head>
<body>
<form method='post' action='insert.php?box=$id' onsubmit='return false;' name='formular'>
  <input type='text' disabled="disabled" size='5' maxlength='5' width='30' value='123' name='txtFeld' class='decimal maximum6' style='visibility:visible' alt='must'>
  <input name="Bearbeiten" type="button" onClick="javascript:/*showbutton();*/ checkIt(this);" value="Bearbeiten" style="text-align:center;color: rgb(255, 102, 0); font-size: 10pt;"/>
</form>
</body>
</html>

Im Übrigen wäre es sehr angenehm, wenn du demnächst den geparsten HTML-Code bereitstellen würdest. Es ist für den Hilfeleistenden aufwendig, erst den PHP-Code in ein verarbeitbares Format überführen zu müssen. Für dich sind es nur ein paar Klicks.

Ciao
Quaese
 
OK. Das funktioniert. Bis auf die Selectboxen. Diese werden ohne icht enabled:
Hier der Code, ohne php :)
HTML:
<form method='post' action='insert.php?box=1' onsubmit='return checkItdez(this);' name='formular'>
<select name='S239' id='S239' style='width:56px;' width='30' disabled='disabled' title='must'>
 <option selected='selected' value='1'>1</option> 
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
</select>
<input name="Bearbeiten" type="button" onClick="javascript:showbutton(); checkIt(this);" value="Bearbeiten" style="text-align:center;color: rgb(255, 102, 0); font-size: 10pt;"/>
<form>
Javascript:
function checkIt(objBtn){
  // Falls nicht der richtige Button gedrückt wurde -> Funktion verlassen
  if(objBtn.value != "Bearbeiten") return false;

  var arrElem = objBtn.form.elements;

  for(var i=0; i<arrElem.length; i++){
    if((arrElem[i].type == "text" || arrElem[i].type == "select") && (arrElem[i].alt == "must" || arrElem[i].title=="must") && (arrElem[i].value != "")){
      arrElem[i].disabled = false;
    }
  }
}

Ist meine überprüfung mit
Code:
arrElem[i].type == "select"
falsch.
Übrigens da man einer selectbox kein "alt" Attribut übergeben kann, habe ich dort title angegeben. Daher das
Code:
 arrElem[i].title=="must"
.
 
Hi,

die Prüfung auf select schlägt fehl, da es unterschiedliche Selektelemente gibt - einfache und mehrfache Auswahl. Entsprechend unterschiedlich sind die type-Bezeichnungen - select-one und select-multiple.

Du könntest allerdins mit der Methode search und einem regulären Ausdruck prüfen.

Desweiteren musst du in die if-Bedingung die Prüfung auf das Attribut title mit dem Wert must aufnehmen.

Die neue if-Bedingung könnte wie folgt aussehen:
Code:
if(((arrElem[i].type == "text") || (arrElem[i].type.search(/^select/)!=-1)) && ((arrElem[i].alt == "must") || (arrElem[i].title == "must")) && (arrElem[i].value != "")){

Ciao
Quaese
 
Zurück