PHP gegenereerde formulier met javascript controleren

  • Onderwerp starter Onderwerp starter Diniz
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Diniz

Gebruiker
Lid geworden
1 jun 2009
Berichten
62
Ik ben bezig met een enquête te bouwen over social media. Afhankelijk of checkboxen zijn aangevinkt wordt de vervolgvraag over de aangevinkte social media kanalen gesteld.

Dus als twitter en facebook alleen worden aangevinkt wordt bij de vervolgvraag "hoeveel tijd spendeert u per kanaal?" alleen twitter en facebook weergeven en Hyves en LinkedIn bijvoorbeeld niet. Dit doe ik doormiddel van PHP op deze manier:

PHP:
if(isset($_POST['vraag16a'])){
		echo("<tr>");	
			echo("<td class=\"tdmetradio\">");	
				echo("Twitter");
			echo("</td>");	
			echo("<td class=\"tdmetradio\">");	
				echo("<input type =\"hidden\" name=\"vraag16a\" VALUE=\$_POST['vraag16a']>");
				echo("<input type=\"text\" name=\"vraag17a\" size=\"20\" maxlength=\"50\" />");
			echo("</td>");							
		echo("</tr>");
}		
if(isset($_POST['facebook'])){
		echo("<tr>");	
			echo("<td class=\"tdmetradio\">");	
				echo("Facebook");
			echo("</td>");	
			echo("<td class=\"tdmetradio\">");	
				echo("<input type =\"hidden\" name=\"vraag16b\" VALUE=\$_POST['vraag16b']>");
				echo("<input type=\"text\" name=\"vraag17b\" size=\"20\" maxlength=\"50\" />");
			echo("</td>");							
		echo("</tr>");
}

Nu wil ik met javascript controleren als dit formulier wordt gesubmit of alle velden wel zijn ingevuld. Alleen op het moment dat PHP bijvoorbeeld LinkedIn niet genereert omdat die niet was aangevinkt bij de vorige pagina werkt mijn stukje javascript niet. Vermoederlijk dus omdat het formulier wat ik probeer te controleren niet bestaat:

[JS]
function formulierTest()
{
if(formulier.vraag16a.value!="")
{
if(formulier.vraag17a.value=="")
{
var re=false;
}
}

if(formulier.vraag16b.value!="")
{
if(formulier.vraag17b.value=="")
{
var re=false;
}
}
if(formulier.vraag16c.value!="")
{
if(formulier.vraag17c.value=="")
{
var re=false;
}
}

if(re==false)
{
alert("Wilt u alstublieft alle velden invullen?");
return false;
}
else
{
return true;
}
}
[/JS]

Dit roep ik aan met onsubmit. Ik vermoed dus als formulier.vraag16c.value niet bestaat daarom het hele javascriptje niet wordt uitgevoerd. Wie kan mij op weg helpen naar een oplossing?
 
dit is zo te zien niet je hele code. ik kan dus niet alle lijntjes voor je nagaan. als je dat wel wilt zal ik iets meer nodig hebben.

Mijn vraag:
wat is de waarde van formulier.
die zie ik niet in je functie zoals volgt:
Code:
var formulier = document.getElementById('jeId');
kom je er nog niet uit kijk dan wat de waarde is als je dit doet:
Code:
alert(typeof formulier);
dat moet object zijn. is dat het niet dan heb je dus geen variable formulier
 
Nee, heb dan waarschijnlijk geen variabele formulier en zal het daar op fout gaan. De volledige code is wat lang vandaar dat ik die in eerste instantie niet had meegepost.

Bij deze:

PHP:
<?php
//gegevens invullen uit kanalen.php
include "post/post_kanalen.php";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="nl" xml:lang="nl">

<head>

<link type="text/css" rel="stylesheet" href="css/enquete.css" />

<style type="text/css">
#extravraag16a {
	display: none;
	
 </style>

<meta http-equiv="content-type" content="text/html;charset=utf-8" />

<title>Social media kanalen</title>

<script type="text/javascript">

function formulierTest()
	{
	if(formulier.vraag16a.value!="")
		{
		if(formulier.vraag17a.value=="")
			{
			var re=false;
			}
		}
	if(formulier.vraag16b.value!="")
		{
		if(formulier.vraag17b.value=="")
			{
			var re=false;
			}
		}
	if(formulier.vraag16c.value!="")
		{
		if(formulier.vraag17c.value=="")
			{
			var re=false;
			}
		}

	if(re==false)
		{
		alert("Wilt u alstublieft alle velden invullen?");
		return false;
		}
		else
		{
		return true;
		}
	}

</script>


</head>

<body id="home">

<?php
echo($_POST['vraag16a']);
?>

<div id="top-bar"></div>

<form name="formulier" method="post" action="kanalenvolgers.php" onsubmit="return formulierTest(this);">

	<table border="0">
		<tr>
			<td colspan="2"><b>Wilt u aangeven hoeveel tijd u per week per kanaal besteedt?</b></td>	
		</tr>
		
<?php

if(isset($_POST['vraag16a'])){
		echo("<tr>");	
			echo("<td class=\"tdmetradio\">");	
				echo("Twitter");
			echo("</td>");	
			echo("<td class=\"tdmetradio\">");	
				echo("<input type =\"hidden\" name=\"vraag16a\" VALUE=\$_POST['vraag16a']>");
				echo("<input type=\"text\" name=\"vraag17a\" size=\"20\" maxlength=\"50\" />");
			echo("</td>");							
		echo("</tr>");
}		
if(isset($_POST['vraag16b'])){
		echo("<tr>");	
			echo("<td class=\"tdmetradio\">");	
				echo("Facebook");
			echo("</td>");	
			echo("<td class=\"tdmetradio\">");	
				echo("<input type =\"hidden\" name=\"vraag16b\" VALUE=\$_POST['vraag16b']>");
				echo("<input type=\"text\" name=\"vraag17b\" size=\"20\" maxlength=\"50\" />");
			echo("</td>");							
		echo("</tr>");
}
if(isset($_POST['vraag16c'])){
		echo("<tr>");	
			echo("<td class=\"tdmetradio\">");	
				echo("LinkedIn");
			echo("</td>");	
			echo("<td class=\"tdmetradio\">");	
				echo("<input type =\"hidden\" name=\"vraag16c\" VALUE=\$_POST['vraag16c']>");
				echo("<input type=\"text\" name=\"vraag17c\" size=\"20\" maxlength=\"50\" />");
			echo("</td>");							
		echo("</tr>");
}
if(isset($_POST['vraag16d'])){
		echo("<tr>");	
			echo("<td class=\"tdmetradio\">");	
				echo("Hyves");
			echo("</td>");	
			echo("<td class=\"tdmetradio\">");	
				echo("<input type =\"hidden\" name=\"vraag16d\" VALUE=\$_POST['vraag16d']>");
				echo("<input type=\"text\" name=\"vraag17d\" size=\"20\" maxlength=\"50\" />");
			echo("</td>");							
		echo("</tr>");
}
if(isset($_POST['vraag16e'])){
		echo("<tr>");	
			echo("<td class=\"tdmetradio\">");	
				echo("Google +");
			echo("</td>");	
			echo("<td class=\"tdmetradio\">");	
				echo("<input type =\"hidden\" name=\"vraag16e\" VALUE=\$_POST['vraag16e']>");
				echo("<input type=\"text\" name=\"vraag17e\" size=\"20\" maxlength=\"50\" />");
			echo("</td>");							
		echo("</tr>");
}
if(isset($_POST['vraag16f'])){
		echo("<tr>");	
			echo("<td class=\"tdmetradio\">");	
				echo("Pinterest");
			echo("</td>");	
			echo("<td class=\"tdmetradio\">");	
				echo("<input type =\"hidden\" name=\"vraag16f\" VALUE=\$_POST['vraag16f']>");
				echo("<input type=\"text\" name=\"vraag17f\" size=\"20\" maxlength=\"50\" />");
			echo("</td>");							
		echo("</tr>");
}
if(isset($_POST['vraag16g'])){
		echo("<tr>");	
			echo("<td class=\"tdmetradio\">");	
				echo("Fora");
			echo("</td>");	
			echo("<td class=\"tdmetradio\">");	
				echo("<input type =\"hidden\" name=\"vraag16g\" VALUE=\$_POST['vraag16g']>");
				echo("<input type=\"text\" name=\"vraag17g\" size=\"20\" maxlength=\"50\" />");
			echo("</td>");							
		echo("</tr>");
}
if(isset($_POST['vraag16h'])){
		echo("<tr>");	
			echo("<td class=\"tdmetradio\">");	
				echo("Overige kanalen");
			echo("</td>");	
			echo("<td class=\"tdmetradio\">");	
				echo("<input type =\"hidden\" name=\"vraag16h\" VALUE=\$_POST['vraag16h']>");
				echo("<input type=\"text\" name=\"vraag17h\" size=\"20\" maxlength=\"50\" />");
			echo("</td>");							
		echo("</tr>");
}
?>
	</table>

<div id="knoppen">
		 
	<input type="image" src="img/volgende.png" value="volgende">

</div>

</form>
                 
</body>
</html>
 
Laatst bewerkt:
simpel. vervang:
Code:
function formulierTest(){
door:
Code:
function formulierTest(formulier){
 
Werkt helaas nog steeds niet. Als het PHP formulier bijvoorbeeld geen Twitter genereert dus niet het tekstveld vraag17a dan werkt de alert niet niet meer. Voor de duidelijkheid, als ik dan de pagina open heeft PHP daar ook geen HTML voor gegenereerd.
 
Ik heb het opgelost door eerst een variabele aan te maken die de post inhoudt met PHP checkt. Voor de volledigheid de werkende code:

[JS]


var vraag1="<?php echo($_POST['vraag16a']);?>"
var vraag2="<?php echo($_POST['vraag16b']);?>"


function formulierTest(formulier)
{

var re=true;

if(vraag1!="")
{
if(formulier.vraag17a.value=="")
{
alert("twitter leeg");
re=false;
}
else
{
alert("twitter vol");
}
}
if(vraag2!="")
{
if(formulier.vraag17b.value=="")
{
alert("facebook leeg");
re=false;
}
else
{
alert("facebook vol");
}
}

if(re==false)
{
alert("Wilt u alstublieft alle velden invullen?");
return false;
}
else
{
return true;
}

}

[/JS]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan