Dynamische RadioButton Liste überprüfen

Ich weiß nicht, wo das Problem liegt.
Der Code funktioniert einwandfrei, sowohl Quaeses als auch der abgewandelte von mir.

Vermutlich heißt das Formular bei dir nicht "form"

Dann musst du im Javascripteil den Namen ändern oder du fügst beim Form-tag noch ein name="form" hinzu.

Mein Code zum Testen:

Code:
<html>
<head>
<title>
</title>
</head>
<script type="text/javascript">
function validate_form() {
  validity = true; // assume valid
 
  if (!validate_radio()){validity=false; alert('You haven\'t choosed an User to send a file to');}
 if (!validate_checkbox()){validity=false; alert('Irgendeine Nachricht');}
  return validity;
 
}
function validate_checkbox(){
  var blnRet = false;
  var arrInputs = document.form.getElementsByTagName("input");
 
  for(var i=0; i<arrInputs.length; i++){
    // Falls es sich um einen Radiobutton handelt und dieser gesetzt ist
    // -> als validiert kennzeichnen und Schleife verlassen
      if((arrInputs[i].type.toLowerCase() == "checkbox") && arrInputs[i].checked){
        blnRet = true;
        break;
    }
  }
 
  return blnRet;
}
function validate_radio(){
  var blnRet = false;
  var arrInputs = document.form.getElementsByTagName("input");

  for(var i=0; i<arrInputs.length; i++){
    // Falls es sich um einen Radiobutton handelt und dieser gesetzt ist
    // -> als validiert kennzeichnen und Schleife verlassen
      if((arrInputs[i].type.toLowerCase() == "radio") && arrInputs[i].checked){
    	blnRet = true;
    	break;
    }
  }

  return blnRet;
}
</script>
<body>
<form id="lol" method="get" action="" name="form">
<div id="tcontent1" class="tabcontent" style="height:195px;">

<ul id="groups_tree" class="treeview">

<li>SYS (Subgroups: 2)
<ul><li><input type="radio" name="group" value="50" />SYS</li>
<li><input type="radio" name="group" value="51" />TEST-Group</li>
</ul>
</li>
</ul>
</div>
<div id="tcontent2" class="tabcontent" style="height:195px;">
                    
<ul id="users_tree" class="treeview">
<li>stram (User: 92)

<ul><li><input type="checkbox" name="User[]" value="368" />USER 368</li>
<li><input type="checkbox" name="User[]" value="33" />USER 33</li>
<li><input type="checkbox" name="User[]" value="3" />USER 3</li>
<li><input type="checkbox" name="User[]" value="4" />USER 4</li>
<li><input type="checkbox" name="User[]" value="530" />USER 530</li>
</ul>
</div>
<input type="button" onclick="validate_form()"/>
</form>
</body>
</html>
 
Zuletzt bearbeitet:
hm... Also das war das erste, was ich kontrolliert habe..

HTML:
<form enctype="multipart/form-data" method="post" action="flash_upload.php" name="form" onSubmit="return validate_form(this.form)">

Wie schon erwähnt.. beim ersten (check_empty) funktioniert ja alles ohne Probleme...
 
Dann mach das mal so:
HTML:
<form enctype="multipart/form-data" method="post" action="flash_upload.php" name="form" onSubmit="return validate_form()">

Aber auch wenn ich das so mache, wie du sagst, funktioniert es bei mir.


Sonst zeig mal dein komplette Formular
 
Zuletzt bearbeitet:
Grummel.. Nur bei mir nicht.. Habe jetzt den Firebug installiert.. Aber es bringt mir auch keine Fehlermeldung aus..

Dein Script einzeln funktioniert wunderbar.. Für mich ist es auch total unverständlich.

Ist es Möglich, dass man einen entsprechenden Div-Block angeben muss, oder ist dies Irrelevant?
 
Dann mach das mal eben anders und benutze folgenenden Javascriptcode:
Javascript:
function validate_checkbox(){
  var blnRet = false;
  var arrInputs = document.getElementsByName("User");
 
  for(var i=0; i<arrInputs.length; i++){
    // Falls es sich um einen Radiobutton handelt und dieser gesetzt ist
    // -> als validiert kennzeichnen und Schleife verlassen
      if((arrInputs[i].type.toLowerCase() == "checkbox") && arrInputs[i].checked){
        blnRet = true;
        break;
    }
  }
 
  return blnRet;
}
function validate_radio(){
  var blnRet = false;
  var arrInputs = document.getElementsByName("group");

  for(var i=0; i<arrInputs.length; i++){
    // Falls es sich um einen Radiobutton handelt und dieser gesetzt ist
    // -> als validiert kennzeichnen und Schleife verlassen
      if((arrInputs[i].type.toLowerCase() == "radio") && arrInputs[i].checked){
    	blnRet = true;
    	break;
    }
  }

  return blnRet;
}
 
Zuletzt bearbeitet von einem Moderator:
Hab ich jetzt gerade probiert..

Grummel funktioniert nicht.. :confused:

um noch anzumerken..

Das From umschliesst eine Tabelle. Diese hat drei Spalen. In der Mittleren befindet sich die Auswahlmöglichkeit... Die verschiedenen Auswahlmöglichkeiten sind via dhtml/ css / javascript in Tabs eingefasst..

Könnte es sein, dass sich js hier sich selbst ein Bein stellt?
 
Teil der Index.php (Source)

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title><? echo $config["name"]." ".$config["version"]; ?></title>
	<link rel="stylesheet" type="text/css" href="./css/style.css" />
    <link rel="stylesheet" type="text/css" href="./css/tabs.css" />
<script language="JavaScript" type="text/javascript" src="./js/tree.js"></script>
<script language="JavaScript" type="text/javascript" src="./js/tabs.js"></script>
</head>
<body>


<div align="center">
<?
if($request==""){


	if(isset($_SESSION["user_uid"])){ ?>
    	<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
<!--
function validate_form() {
  validity = true; // assume valid
  if (!validate_checkbox()){ validity = false; alert{'You haven\'t choosed a Group to send a file to'); }
  if (!check_empty(document.form.message.value)){ validity = false; alert('The Message is empty'); }
  if (!validate_radio()){ validity = false; alert('You haven\'t choosed an User to send a file to'); }
  
  return validity;
}
function validate_checkbox(){
  var blnRet = false;
  var arrInputs = document.getElementsByName("User");
 
  for(var i=0; i<arrInputs.length; i++){
    // Falls es sich um einen Radiobutton handelt und dieser gesetzt ist
    // -> als validiert kennzeichnen und Schleife verlassen
      if((arrInputs[i].type.toLowerCase() == "checkbox") && arrInputs[i].checked){
        blnRet = true;
        break;
    }
  }
 
  return blnRet;
}
function validate_radio(){
  var blnRet = false;
  var arrInputs = document.getElementsByName("group");
 
  for(var i=0; i<arrInputs.length; i++){
    // Falls es sich um einen Radiobutton handelt und dieser gesetzt ist
    // -> als validiert kennzeichnen und Schleife verlassen
      if((arrInputs[i].type.toLowerCase() == "radio") && arrInputs[i].checked){
        blnRet = true;
        break;
    }
  }
 
  return blnRet;
}
function check_empty(text) {
  return (text.length > 0); // gibt false zurück wenn leer
}

// -->
</script>
		<form enctype="multipart/form-data" method="post" action="flash_upload.php" name="form">
		<input type="hidden" name="from" value="<? echo $_SESSION["user_id"]; ?>" />
	<? } ?>
<table cellpadding="3" cellspacing="3" class="table" border="0">
	<colgroup>
    	<col width="300px" style="text-align:left;" />
        <col width="400px" style="text-align:left;" />
        <col width="300px" />
    </colgroup>
    <? header_filex($config); ?>
    
    <?
	if(isset($_SESSION["user_uid"])){
	?>
    <tbody>
    
	<tr>
    
    	<td rowspan="4" style="background-color:<? echo $config["color_left"]; ?>;">
        <div style="overflow:auto; height:640px; width:290px;">
        <h4>Received:</h4>
        <?
		$received_files=get_all_received_files($_SESSION["user_id"]);
		?>
        <div id="lefttabs" class="indentmenu">
        	<ul>
                <li><a href="#" rel="leftcontent1">from User</a></li>
                <li><a href="#" rel="leftcontent2">from Group</a></li>
            </ul>
        </div>
        <div id="leftcontent1" class="tabcontent" style="height:90px;">
			<? echo $received_files["user_files"]; ?>
        </div>
        <div id="leftcontent2" class="tabcontent" style="height:90px;">
			<? echo $received_files["group_files"]; ?>
            
            <? //echo "<br /><hr /><br />$received_files["test"]; ?>
        </div>
        
        </div>
        <script type="text/javascript">
			var myflowers=new ddtabcontent("lefttabs");
			myflowers.setpersist(true); 
			myflowers.setselectedClassTarget("link");
			myflowers.init();
		</script>
        </td>
        
        <td>
        <h4>Send to:</h4>
        	<div style="overflow:auto; height:275px; width:392px;border:1px solid gray;" >
                <div id="centertabs" class="indentmenu">
                    <ul>
                        <li><a href="#" rel="tcontent2">Users</a></li>
                        <li><a href="#" rel="tcontent1">Groups</a></li>
                        <li><a href="#" rel="tcontent3">Search</a></li>
                    </ul>
                </div>
                <br />
                <br />
                <div style=" width:350px; margin-bottom: 1em; padding: 1px;">
                    <div id="tcontent1" class="tabcontent" style="height:195px;">
                    <? echo get_groups(); ?>
                    </div>
                    
                    <div id="tcontent2" class="tabcontent" style="height:195px;">
                    <? echo get_users($_SESSION["user_id"]); ?>
                    </div>
                    
                    <div id="tcontent3" class="tabcontent" style="height:195px;">
                    <?
					
                    	$search= new search();
						if(@$_SESSION["suche"]=="Search"){
							$search->showSearch($_SESSION["search"],$_SESSION["type"]);
						} elseif(@$_SESSION["suche"]=="New Search"){
							$search->searchUser();
						} else {
							$search->searchUser();
						}
					 ?>
                    </div>
                </div>
			</div>
			<script type="text/javascript">
				var myflowers=new ddtabcontent("centertabs");
				myflowers.setpersist(true); 
				myflowers.setselectedClassTarget("link");
				myflowers.init();
			</script>
</td>
        <td rowspan="4" style="background-color:<? echo $config["color_right"]; ?>;">
        <div style="overflow:auto; height:640px; width:290px;">
        <h4>Sent:</h4>
        <?
		$sent_files=get_all_send_files($_SESSION["user_id"]);
		?>
        <div id="righttabs" class="indentmenu">
        	<ul>
                <li><a href="#" rel="rightcontent1">to User</a></li>
                <li><a href="#" rel="rightcontent2">to Group</a></li>
            </ul>
        </div>
        <div id="rightcontent1" class="tabcontent" style="height:90px;">
			<? echo $sent_files["user_sent"]; ?>
        </div>
        <div id="rightcontent2" class="tabcontent" style="height:90px;">
			<? echo $sent_files["group_sent"]; ?>
        </div>
        
        </div>
        <script type="text/javascript">
			var myflowers=new ddtabcontent("righttabs");
			myflowers.setpersist(true);
			myflowers.setselectedClassTarget("link");
			myflowers.init();
		</script>
        </td>
    </tr>
    <tr>
        <td style="height:130px;">
        	<h5>Message to Submit</h5>
            <center>
            <textarea name="message" cols="40" rows="7"></textarea>
            </center>
        </td>
    </tr>
    <tr>
        <td style="height:175px;">
        <fieldset>
        <legend>Your File</legend>
        <ol>
          <li id="upload">
            <label for="Title">Choose a file to upload: </label>
            <input name="MAX_FILE_SIZE" value="<? echo $config["max_file_size"]; ?>" type="hidden" />
            <input name="myFile"  id="file_name"  type="file" />
          </li>
        </ol>
        </fieldset>
        <center><input type="submit" id="submit" name="submit" value="Send" class="button" onclick="validate_form()"/></center>
       
        </td>
    
    </tr>
    </tbody>
</table>
</div>
</body>
</html>

Hier noch die Funktion get_groups()
PHP:
function get_groups(){
	include("./config.php");
	$db1 = new db($config["db_user"],$config["db_pass"],$config["db_name"],$config["db_host"]);
	$group_query="SELECT * FROM groups WHERE parent='0' AND shortcut='0' ORDER BY name;";
	$all_groups=$db1->query($group_query);
	$text="";
	if(mysql_num_rows($all_groups)>0){
		//$text.="<a href=\"javascript:ddtreemenu.flatten('groups_tree', 'expand')\">Expand All</a> | <a href=\"javascript:ddtreemenu.flatten('groups_tree', 'contact')\">Contact All</a><br/>\n";
		$text.="\n<ul id=\"groups_tree\" class=\"treeview\">\n";
		while($value=mysql_fetch_array($all_groups)){
			$query="SELECT * FROM groups WHERE parent='".$value["id"]."' ORDER BY name;";
			$all_subgroups=$db1->query($query);
			$count_subgroups=mysql_num_rows($all_subgroups);
			$text.="<li>".$value["name"]." (Subgroups: ".$count_subgroups.")\n";
			$text.="<ul>";
			if(mysql_num_rows($all_subgroups)>0){
				while($subgroups=mysql_fetch_array($all_subgroups)){
					$text.="<li><input type=\"radio\" name=\"group\" value=\"".$subgroups["id"]."\" />".$subgroups["name"]."</li>\n";
				}
			$text.="</ul>\n";
			}else {
				$text.="<li>No Subgroups saved</li></ul>";
			}		
			$text.="</li>\n";
		}
		$text.="</ul>\n";
		$text.='<script type="text/javascript">ddtreemenu.createTree("groups_tree", true);</script>';
		$text.="<br />\n";
	}else {
		$text="0";
	}
	return $text;
}

Abschliessend noch get_users()

PHP:
function get_users($usid){
	include("./config.php");
	$db1 = new db($config["db_user"],$config["db_pass"],$config["db_name"],$config["db_host"]);
	$user_query="SELECT * FROM groups WHERE shortcut !='0';";
	$all_agencies=$db1->query($user_query);
	$text="";
	if(mysql_num_rows($all_agencies)>0){
		$text.="\n<ul id=\"users_tree\" class=\"treeview\">\n";
		while($value=mysql_fetch_array($all_agencies)){
			$query="SELECT u.id,u.vorname,u.nachname FROM user AS u, user_in_group AS ug WHERE u.id = ug.user_id AND ug.group_id='".$value["id"]."' AND u.id!='".$usid."' ORDER BY u.nachname ASC, u.vorname ASC;";
			$all_subgroups=$db1->query($query);
			$count_subgroups=mysql_num_rows($all_subgroups);
			$text.="<li>".$value["shortcut"]." (User: ".$count_subgroups.")\n";
			$text.="<ul>";
			if(mysql_num_rows($all_subgroups)>0){
				while($subgroups=mysql_fetch_array($all_subgroups)){
					$text.="<li><input type=\"checkbox\" name=\"User[]\" value=\"".$subgroups["id"]."\" />".$subgroups["nachname"]." ".$subgroups["vorname"]."</li>\n";
				}
			$text.="</ul>\n";
			}else {
				$text.="<li>No User stored</li></ul>";
			}		
			$text.="</li>\n";
		}
		$text.="</ul>\n";
		$text.='<script type="text/javascript">ddtreemenu.createTree("users_tree", true);</script>';
		$text.="<br />\n";
	}else {
		$text="0";
	}
	return $text;
	
}

Ich hoffe, das hilft dir eventuell weiter (ich weiss, ist nicht schöner programmierstil)
 
Gib den beiden mal eine ID, also bspw. id="User" und id="Group" und dann ersetze den Inhalt der Checkbox-checkfunktion hiermit:
Javascript:
var arrInputs = document.getElementById("User").value; 
alert(arrInputs);

Du musst erstmal herausfinden, warum die Felder nicht angesprochen werden.
 
Zuletzt bearbeitet von einem Moderator:
Es gibt mir eine Nummer aus... (368). Also den ersten User, der Angezeigt wird.

Jedoch ist dieser nicht Checked....
 
Zurück