Dynamischer Fragebogen

Status
Nicht offen für weitere Antworten.

Mephist0

Mitglied
Hi,

ich bin noch ganz neu in Java und soll einen Fragebogen für eine Freundin erstellen.

Der Fragebogen soll z.B. Frage 7 deaktivieren, wenn bei Frage 6 eine bestimmte Antwort angeklickt wird. Da man das mit PHP nicht lösen kann, habe ich micht entschlossen auf Java zu übergreifen. Die Fragen bestehen aus Textboxen, Radiobuttons oder Checkboxen.

Jetzt natürlich meine Frage: Wie lässt sich das Managen?

Grüße, Mephisto.
 

0x7F800000

Top Contributor
Sicher, dass du auf dem richtigen Planeten gelandet bist? Da du schon PHP erwähnt hast, entsteht irgendwie der Verdacht, dass du JavaScript gemeint haben könntest...
 
Zuletzt bearbeitet von einem Moderator:

hdi

Top Contributor
Eine Alternative zu JavaScript wäre ein JApplet.

Aber bevor wir hier voreilig urteilen: Stimmt es denn überhaupt, dass dieser Bogen
im Web laufen muss und nicht als normale Desktop-Anwendung?
 

Mephist0

Mitglied
Ääääääh :eek:

Also hier nur Programmorientiertes programmieren, nicht webbasierend?

//EDIT: Jop, als Webanwendung.
 

Wildcard

Top Contributor
Natürlich geht es hier auch um Webanwendungen (nicht nur um Applets wie von hdi angedeutet), solange die Sprache der Wahl Java ist und nicht etwa client seitiges Javascript.
Was genau hat dir den vorgeschwebt? Eine AJAX Lösung?
 

hdi

Top Contributor
Sorry war unvollständig ausgedrückt. Ich denke aber nicht dass er hier irgendwelche
Servlets aufziehen will oder jsp's.
Ich denke schon eher, dass er nur will dass man's im Browser starten kann, also Applet
 

Mephist0

Mitglied
Hi,

sorry für die Verwirrung. Ich will definitiv einen Webbasierten Fragebogen erstellen, sprich kein Java. Ich kannte den Unterschied bissher nicht.

AJAX habe ich mir auch schon vorgestellt, aber gesagt gekriegt, das es das Maß eines Fragebogen übersteigt, weil: zu kompliziert.

Ich wende mich jetzt am besten an ein JavaScript Forum^^.

Danke trotzdem für die Hilfe. Wenn noch jemand eine Idee für JavaScript-Lösung hat, würde ich diese natürlich trotzdem gerne hören.

Grüße, Mephisto.
 

0x7F800000

Top Contributor
Wenn du rein Clientseitig entscheiden kannst, was ein- und ausgeblendet wird, brauchst du doch kein AJAX, ich könnte mir ganz gut vorstellen, dass auch so eine einfache enblend-ausblendmethode sehr nützlich sein kann.
 

Illuvatar

Top Contributor
So was in der Art (ungetestet):
HTML:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function updateQuestionStatus()
{
  $("button2").disabled = !$("button1").checked;
  //$("button5").disabled = $("button4").checked;
  // ...
}
function $(name) {return document.getElementById(name);}
</script>
</head>
<body>
...
Macht es Sinn die nächste Frage zu stellen? <input type="checkbox" id="button1" onchange="updateQuestionStatus()"><br>
Warum haben Sie Frage 1 mit ja beantwortet? <input type="checkbox" id="button2" disabled="disabled" onchange="updateQuestionStatus()">
...
</body>
</html>
 
Zuletzt bearbeitet:

0x7F800000

Top Contributor
Omfg, sehen wir aus wie Javascript forum oder was? Anscheinend ja^^ :cry:
[HIGHLIGHT="xml"]<?xml version="1.0" encoding="utf-8" ?>
<!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" xml:lang="de" lang="de">
<head>
<title>irgendsoein toller fragebogen...</title>
<style type="text/css">
*{
background-color: #000000;
color: #FFFFFF;
}

div{
background-color: #553300;
margin: 10px;
padding: 10px;
width: 80%;
overflow: hidden;
}
</style>
<script type="text/javascript">
//<![CDATA[
function init(){
document.getElementById("myForm").cbHead.checked=false;
document.getElementById("myForm").cbEyes.checked=false;
document.getElementById("myForm").cbGoogle.checked=false;
initBlocks();
}

function initBlocks(){
document.getElementById("blockHead").style.display="block";
document.getElementById("blockEyes").style.display="none";
document.getElementById("blockGoogle").style.display="none";
document.getElementById("blockYouSuck").style.display="block";
document.getElementById("blockOk").style.display="none";
}

//eigentlich müsste man auf dem server schönes Modell für diesen Fragebogen erzeugen,
//dann topologische Sortierung der einzelnen Fragen durchführen
//die Adjazenzliste schön übersichtlich oben in irgendeine Datenstruktur a lá Map<Frage,List<Frage>> packen usw...

//aber da du eine JS Frage in einem Javaforum postest, wird dich die Hässlichkeit der folgenden Lösung hoffentlich nicht zu sehr ankotzen^^
//sehr gammelige Lösung, müsste sogar javascriptlern tränen in die Augen treiben...

function updateBlocks(){
initBlocks();
if(document.getElementById("myForm").cbHead.checked){
document.getElementById("blockEyes").style.display="block";
if(document.getElementById("myForm").cbEyes.checked){
document.getElementById("blockGoogle").style.display="block";
if(document.getElementById("myForm").cbGoogle.checked){
document.getElementById("blockYouSuck").style.display="none";
document.getElementById("blockOk").style.display="block";
}
}
}
}
// ]]>
</script>
</head>
<body onload="javascript:init()">
<form id="myForm" action="http://www.wherever.whatever.xyz"
method="post" enctype="multipart/form-data">

<div id="blockHead">
<label><input type="checkbox" name="cbHead" value="wtf1" onclick="javascript:updateBlocks()"/>Ich habe einen Kopf</label>
</div>

<div id="blockEyes">
<label><input type="checkbox" name="cbEyes" value="wtf2" onclick="javascript:updateBlocks()"/>Ich habe sogar Augen</label>
</div>

<div id="blockGoogle">
<label><input type="checkbox" name="cbGoogle" value="wtf3" onclick="javascript:updateBlocks()"/>Ich habe schon was von Google geh&ouml;rt</label>
</div>

<div id="blockYouSuck" style="background: red">
Trifft Irgendwas nicht zu? Tja, dann haben Sie m&auml;chtig Pech gehabt...
</div>

<div id="blockOk" style="background: green">
Trifft alles zu? Dann googlen Sie mal nach "jendryschik einf&uuml;hrung in xhtml und css"
</div>
</form>

<p>
<a href="http://validator.w3.org/check?uri=referer"><img
src="http://www.w3.org/Icons/valid-xhtml10"
alt="Valid XHTML 1.0 Strict" height="31" width="88" /></a>
</p>

</body>
</html>
[/HIGHLIGHT]
Im Prinzip "voll funktionsfähig" aber ich brauche wohl nicht zu sagen, dass es totaler schrott ist, ich seh diesen JS-Krempel heute zum zweiten Mal im Leben^^ :D

edit: so, dieses Teil kommt nun auch durch den w3c-Validator, habe vorhin den <![CDATA[]]> Block vergessen.
 
Zuletzt bearbeitet von einem Moderator:

Noctarius

Top Contributor
$("button2") hat soweit ich weiß den selben Effekt wie "document.getElementById('button2')"

Ob das JQuery genannt wird - ka, aber JavaScript ist trotzdem hässlich und ein "OOP-Ansatz" (hier können gar nicht genug Anführungsstriche stehen) wie Ext2 (benutzen wir in der Firma für die AJAX-basierten Oberflächen) macht das Ganze auch nicht schöner.
 

mvitz

Top Contributor
Ist ursprünglich prototype. Aber fast alle höheren JavaScript Frameworks bauen auf prototype auf :D
 

Noctarius

Top Contributor
Tja der Name ist halt Programm geworden, aber stimmt jetzt wo Ihr es erwähnt habt fällt mir auch ein, dass ich das in der Dokumentation zu Prototype das erste Mal gesehen hab.

Wie nennen die das nochmal? Annonyme-Funktion oder so, gell?
 

0x7F800000

Top Contributor
diese Dollarzeichen hab ich noch nie gesehen (o wunder^^), aus dem ersten code wurde zwar sofort klar, dass es anscheinend ein element über id ansprechen soll, aber irgendwie hat der js interpreter das nicht direkt geschluckt... Ich hab grad irgendwie meine schwierigkeit damit, zu verstehen, wohin separate javascript-pakete denn geladen werden sollen, wenn das ein clientseitiger script ist :confused: Muss man da einen zusäzlichen script-tag angeben, der auf irgendsoeine "prototype-package" zeigt oder wie läuft es normalerweise ab...?
 

Illuvatar

Top Contributor
Normalerweise ist dann da halt noch ein
HTML:
<script type="text/javascript" src="prototype.js" />

Der von mir oben gepostete Code sollte aber eigentlich einfach so lauffähig sein. Hat zumindest beim Testen in Opera funktioniert ;)

Edit: ach ja, ich verschiebs mal in den Javascript-bereich ;)
 
Zuletzt bearbeitet:

0x7F800000

Top Contributor
Normalerweise ist dann da halt noch ein
HTML:
<script type="text/javascript" src="prototype.js" />
wunderbar, nach dem prinzip der geringsten überraschung

Der von mir oben gepostete Code sollte aber eigentlich einfach so lauffähig sein. Hat zumindest beim Testen in Opera funktioniert ;)
ja, sorry, habe anfangs dieses
Code:
function $(name) {return document.getElementById(name);}
übersehen, war es denn überhaupt da? :grin:
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben