Gibt's gotfocus()? Ich kann keine richtige Frage finden...
Graphity
- javascript
Hallo
Falls es dafür schon eine Antwort in diesem Forum gibt, tut mir das sehr leid, das ich die Frage nochmal gepostet habe, aber ich wusste nicht, nach was ich suchen soll...
Also, mal eine lange Beschreibung meines Problems:
Ich habe zwei Frames. Links ist ein Formular, ein Einteilungsplan für Ärzte wer in welchen OP muß. Rechts ist eine Liste der Namen der Ärzte.
Nun wollte ich, daß im rechten Frame die Namen als Buttons angezeigt werden, so daß man auf den Namen klickt und links in das Formular wird genau dieser Name eingetragen. So kann ich verhindern, daß Namen falsch geschrieben werden.
Durch eine direkte Adressierung der <input>-Felder konnte ich die Namen auch eintragen, doch wie kriege ich es hin, daß ich einen Button drücke und der Name ist eingetragen. Wenn ich den nächsten Button drücke, ist der Name im nächsten Feld (nächster im Sinne von Tabindex).
So, daß man nur Buttons drücken muß und man kommt durch das komplette Formular.
Ist das möglich?
Ach ja, ich habe beide Seiten in PHP programmiert (muß sein, da auch Ärzte urlaub nehmen :-) und dann nicht zur Auswahl stehen).
In hoffnungsvoller Erwartung
Euer
Graphity
Hallo
Falls es dafür schon eine Antwort in diesem Forum gibt, tut mir das sehr leid, das ich die Frage nochmal gepostet habe, aber ich wusste nicht, nach was ich suchen soll...
Also, mal eine lange Beschreibung meines Problems:
Ich habe zwei Frames. Links ist ein Formular, ein Einteilungsplan für Ärzte wer in welchen OP muß. Rechts ist eine Liste der Namen der Ärzte.
Nun wollte ich, daß im rechten Frame die Namen als Buttons angezeigt werden, so daß man auf den Namen klickt und links in das Formular wird genau dieser Name eingetragen. So kann ich verhindern, daß Namen falsch geschrieben werden.
Durch eine direkte Adressierung der <input>-Felder konnte ich die Namen auch eintragen, doch wie kriege ich es hin, daß ich einen Button drücke und der Name ist eingetragen. Wenn ich den nächsten Button drücke, ist der Name im nächsten Feld (nächster im Sinne von Tabindex).
So, daß man nur Buttons drücken muß und man kommt durch das komplette Formular.
Ist das möglich?
Ach ja, ich habe beide Seiten in PHP programmiert (muß sein, da auch Ärzte urlaub nehmen :-) und dann nicht zur Auswahl stehen).
In hoffnungsvoller Erwartung
Euer
Graphity
Hallo zurück,
mal sehen, ob ich das Problem richtig verstanden habe. Falls Du einen Button der Form
<input type="button" value="Hans Meier"/>
programmiert hast, dann mach doch folgendes daraus:
<input type="button" value="Hans Meier" onClick="writeName('Hans Meier')"/>
In einem JavaScript extern oder intern definierst Du dann die Funktion writeName(name) wie folgt:
<script language="javascript">
function writeName(name)
{
parent.<FrameName>.document.all.id.value = name;
};
</script>
Wäre nur so eine Idee. Du sprichst den linken Frame über parent.Framename an. Darin befindet sich ein Input-feld, welches über die id ansprechbar ist.
Grüsse
Frank
Hallo
Nette Idee. Aber weder habe ich nur ein input-Feld (es sind insg. 37) noch wechselt der cursor durch die input-Felder.
Ich weiß nicht, ob ich mich klar ausgedrückt habe. Ich wollte, daß ein Button gedrückt wird und dann wird der Zähler um ein erhöht. So kann ich durch die input-Felder via form.elements[#] durchzählen. Das Problem einer externen Funktion wäre, daß die dortige Variable local ist und somit immer 0 bzw. eins 1 wäre...
trotzdem danke
Dein
Graphity
gruss Graphity,
Nette Idee. Aber weder habe ich nur ein input-Feld (es sind insg. 37) noch wechselt der cursor durch die input-Felder.
Ich weiß nicht, ob ich mich klar ausgedrückt habe. Ich wollte, daß ein Button gedrückt wird und dann wird der Zähler um ein erhöht. So kann ich durch die input-Felder via form.elements[#] durchzählen. Das Problem einer externen Funktion wäre, daß die dortige Variable local ist und somit immer 0 bzw. eins 1 wäre...
da Du ja mit PHP arbeitest sollte es doch einfach sein, dem
vorschlag von Frank zu folgen;
da Du die seite doch hoffentlich ueber ein script aus irgendeiner
form von lesbaren datensaetzen generierst, ist es ohne weiters
moeglich, sowohl den input-text-feldern im linken frame, als auch
der button-leiste im rechten frame eindeutige namen und die jeweiligen aktionen fuer onclick- und onfocus- ereignisse mitzu-
geben, und damit auch auf die verwendung von komplexen javascript-
functionen zu verzichten;
in etwa so:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>clickDenDoktor.html</title>
</head>
<frameset cols="*,*" framespacing="0" frameborder="0" border="0">
<frame name="clickDenDoktorFormular" src="clickDenDoktorFormular.html" frameborder="0" border="0" marginwidth="0" marginheight="0" scrolling="auto" noresize>
<frame name="clickDenDoktorButtons" src="clickDenDoktorButtons.html" frameborder="0" border="0" marginwidth="0" marginheight="0" scrolling="auto" noresize>
<noframes>
<body>
</body>
</noframes>
</frameset>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>clickDenDoktorFormular.html</title>
</head>
<body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<table cols="1" rows="1" width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td align="right" valign="middle">
<form name="inputText">
<table cols="1" rows="" height="" cellspacing="0" cellpadding="0" border="0">
<tr>
<td height="20" align="left" valign="top"><input type="text" name="MargitSchneider" value="" size="20" maxlength="30" onfocus="top.frames['clickDenDoktorButtons'].document.forms['inputButton'].elements['button001'].focus()" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="text" name="MarkoSchulze" value="" size="20" maxlength="30" onfocus="top.frames['clickDenDoktorButtons'].document.forms['inputButton'].elements['button002'].focus()" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="text" name="BrittaMahlow" value="" size="20" maxlength="30" onfocus="top.frames['clickDenDoktorButtons'].document.forms['inputButton'].elements['button003'].focus()" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="text" name="BorisMueller" value="" size="20" maxlength="30" onfocus="top.frames['clickDenDoktorButtons'].document.forms['inputButton'].elements['button004'].focus()" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="text" name="SusanneBuergel" value="" size="20" maxlength="30" onfocus="top.frames['clickDenDoktorButtons'].document.forms['inputButton'].elements['button005'].focus()" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="text" name="StefanBlaschke" value="" size="20" maxlength="30" onfocus="top.frames['clickDenDoktorButtons'].document.forms['inputButton'].elements['button006'].focus()" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="text" name="RomyPippig" value="" size="20" maxlength="30" onfocus="top.frames['clickDenDoktorButtons'].document.forms['inputButton'].elements['button007'].focus()" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="text" name="RonaldPfitzner" value="" size="20" maxlength="30" onfocus="top.frames['clickDenDoktorButtons'].document.forms['inputButton'].elements['button008'].focus()" /></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>clickDenDoktorButtons.html</title>
</head>
<body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<table cols="1" rows="1" width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td align="left" valign="middle">
<form name="inputButton">
<table cols="1" rows="" height="" cellspacing="0" cellpadding="0" border="0">
<tr>
<td height="20" align="left" valign="top"><input type="button" name="button001" value="Margit Schneider" size="30" onclick="top.frames['clickDenDoktorFormular'].document.forms['inputText'].elements['MargitSchneider'].value='Margit Schneider';document.forms['inputButton'].elements['button002'].focus()"" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="button" name="button002" value="Marko Schulze" size="30" onclick="top.frames['clickDenDoktorFormular'].document.forms['inputText'].elements['MarkoSchulze'].value='Marko Schulze';document.forms['inputButton'].elements['button003'].focus()"" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="button" name="button003" value="Britta Mahlow" size="30" onclick="top.frames['clickDenDoktorFormular'].document.forms['inputText'].elements['BrittaMahlow'].value='Britta Mahlow';document.forms['inputButton'].elements['button004'].focus()"" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="button" name="button004" value="Boris Mueller" size="30" onclick="top.frames['clickDenDoktorFormular'].document.forms['inputText'].elements['BorisMueller'].value='Boris Mueller';document.forms['inputButton'].elements['button005'].focus()"" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="button" name="button005" value="Susanne Buergel" size="30" onclick="top.frames['clickDenDoktorFormular'].document.forms['inputText'].elements['SusanneBuergel'].value='Susanne Buergel';document.forms['inputButton'].elements['button006'].focus()"" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="button" name="button006" value="Stefan Blaschke" size="30" onclick="top.frames['clickDenDoktorFormular'].document.forms['inputText'].elements['StefanBlaschke'].value='Stefan Blaschke';document.forms['inputButton'].elements['button007'].focus()"" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="button" name="button007" value="Romy Pippig" size="30" onclick="top.frames['clickDenDoktorFormular'].document.forms['inputText'].elements['RomyPippig'].value='Romy Pippig';document.forms['inputButton'].elements['button008'].focus()"" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="button" name="button008" value="Ronald Pfitzner" size="30" onclick="top.frames['clickDenDoktorFormular'].document.forms['inputText'].elements['RonaldPfitzner'].value='Ronald Pfitzner';top.focus()" /></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
by(t)e by(t)e - peterS. - pseliger@gmx.net
Woaaaa, das ist mal ne Antwort. Wie kann ich Dir das nur schonend beibringen?
Ich glaube mal, ich gebe zu, ich hab's nicht ausprobiert, daß dieses script jedem Raum (<input type="text">-Feld) immer den gleichen Namen zuweist. Kann das sein?
Um das mit Deinen "Worten" zu sagen:
ich würde gerne top.frames['clickDenDoktorFormular'].document.forms['inputText'].elements['StefanBlaschke'] mal den value BorisMueller zuweisen, mal einen anderen...
Das Formular wird nicht immer gleich ausgefüllt, sonder immer anders, sonst wär's ja auch uninteressant.
Egal, danke für den Vorschlag auf jeden Fall!!
Dein
Graphity
gruss Graphity,
dann eben so ?:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>clickDenDoktorFormular.html</title>
</head>
<body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<table cols="1" rows="1" width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td align="right" valign="middle">
<form name="inputText">
<table cols="1" rows="" height="" cellspacing="0" cellpadding="0" border="0">
<tr>
<td height="20" align="left" valign="top"><input type="text" name="diensthabenderArzt" value="" size="20" maxlength="30" onfocus="top.frames['clickDenDoktorButtons'].setButtonFocus()" /></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>clickDenDoktorButtons.html</title>
<script language="JavaScript" type="text/javascript">
<!--
// dha: DienstHabenderArzt
var dhaArray = [["Margit Schneider"],["Marko Schulze"],["Britta Mahlow"],["Boris Mueller"],["Susanne Buergel"],["Stefan Blaschke"],["Romy Pippig"],["Ronald Pfitzner"]];
function getTheDoctors() {
myText = '<table cols="1" rows="' + dhaArray.length + '" height="" cellspacing="0" cellpadding="0" border="0">\n'
for (var i=0;i<dhaArray.length;i++) {
myText += '<tr>\n\t<td height="20" align="left" valign="top"><input type="button" value="' + dhaArray[i] + '" size="30" onclick="setInputTextValue(' + (i+1) + ')" /></td>\n</tr>\n';
}
myText += '</table>\n';
return myText;
}
function setInputTextValue(dhaIndex) {
top.frames["clickDenDoktorFormular"].document.forms["inputText"].elements["diensthabenderArzt"].value = dhaArray[(dhaIndex-1)];
if (dhaIndex >= dhaArray.length) {
top.focus();
} else {
document.forms["inputButton"].elements[dhaIndex].focus();
}
}
function setButtonFocus() {
var myField = top.frames["clickDenDoktorFormular"].document.forms["inputText"].elements["diensthabenderArzt"];
var proofExistence = false;
/* if (myField.value == "") {
document.forms["inputButton"].elements[0].focus();
return;
}*/
for (var i=0;i<dhaArray.length;i++) {
if (myField.value == dhaArray[i]) {
document.forms["inputButton"].elements[i].focus();
proofExistence = true;
break;
}
}
if (!proofExistence) {
document.forms["inputButton"].elements[0].focus();
}
}
//-->
</script>
</head>
<body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<table cols="1" rows="1" width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td align="left" valign="middle">
<form name="inputButton">
<script language="JavaScript" type="text/javascript">document.write(getTheDoctors());</script>
<!--
<table cols="1" rows="" height="" cellspacing="0" cellpadding="0" border="0">
<tr>
<td height="20" align="left" valign="top"><input type="button" value="Margit Schneider" size="30" onclick="setInputTextValue(1)" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="button" value="Marko Schulze" size="30" onclick="setInputTextValue(2)" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="button" value="Britta Mahlow" size="30" onclick="setInputTextValue(3)" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="button" value="Boris Mueller" size="30" onclick="setInputTextValue(4)" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="button" value="Susanne Buergel" size="30" onclick="setInputTextValue(5)" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="button" value="Stefan Blaschke" size="30" onclick="setInputTextValue(6)" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="button" value="Romy Pippig" size="30" onclick="setInputTextValue(7)" /></td>
</tr>
<tr>
<td height="20" align="left" valign="top"><input type="button" value="Ronald Pfitzner" size="30" onclick="setInputTextValue(8)" /></td>
</tr>
</table>
//-->
</form>
</td>
</tr>
</table>
</body>
</html>
by(t)e by(t)e - peterS. - pseliger@gmx.net
Hmmhmmm... Also erstmal DANKE für das nette script.
Ich möchte mich auch bei allen bedanken, die diesen Thread mitverfolgen und sich Gedanken machen.
Aber: Es geht schon wieder nicht.
Bedenke, ich habe mehrere <input type="text">-Felder, natürlich mit verschiedenen Namen. Und wegen top.frames["clickDenDoktorFormular"].document.forms["inputText"].elements["diensthabenderArzt"].value = dhaArray[(dhaIndex-1)];
Ist es natürlich möglich, diesem einen <input>-Feld namens "dienhabenderArzt" einen anderen value zuzuweisen, aber nicht "diensthabenderArzt1" den vierten namen und "diensthabenderArzt2" den ersten, was ist worum es mir eigentlich geht.
Nochmals herzlichsten Danke für die Bemühungen, vielleicht hatte ich mich ja nicht deutlich ausgedrückt und habe so eure Zeit verschwendet. Das tut mir leid
Servus
Graphity
hallo again Graphity,
Bedenke, ich habe mehrere <input type="text">-Felder
also doch mehrere?? - siehe mein erstes posting
... vielleicht hatte ich mich ja nicht deutlich
ausgedrückt und habe so eure Zeit verschwendet.
naja - vielleicht nicht deutlich genug
Das tut mir leid
lass den kopf nicht haengen und beschreibe doch mal,
wie der erste loesungsansatz (jeder button "schreibt"
in sein dazugehoeriges textfeld) modifiziert werden
muesste, um Deinen anforderungen zu genuegen -
!!darf ruhig ausfuehrlich sein !!
bis bald - peterS. - pseliger@gmx.net
Hallo
Danke für Deine Hilfe. Ich werde morgen mal die Seite auf einen Server legen, damit du Dir anschauen kannst, was ich meine. Hast Du ICQ AIM oder sowas? Oder irgendwas anderes womit wir chatten könnten?
Ich finde es übrigens voll nett das Du mir hilfst!!
cu
Graphity
Hallo!
Danke für Deine Hilfe. Ich werde morgen mal die Seite auf einen Server legen, damit du Dir anschauen kannst, was ich meine. Hast Du ICQ AIM oder sowas? Oder irgendwas anderes womit wir chatten könnten?
Nix da! Hier geblieben! :-)
Es spricht nichts dagegen, den Thread hier morgen im Forum weiterzuspinnen.
Sehr viele lesen auch hier unten noch mit.
Gruß,
kerki
gruss,
Hallo!
Nix da! Hier geblieben! :-)
Es spricht nichts dagegen, den Thread hier morgen im Forum weiterzuspinnen.
Sehr viele lesen auch hier unten noch mit.
Gruß,
kerki
genau
b(y)te by(t)e - peterS. - pseliger@gmx.net
Es freut mich zu hören, daß das mehrere interessiert, aber ich glaube es wäre besser, wenn man die Änderungen "Live" im Instant Chat miterleben könnte. Gibt's nicht einen Chat hier im Forum? Da könnten sich doch alle treffen, die's interessiert und brav mitverfolgen. Ich schlage folgendes vor:
Heute, Mittwoch, ab 12:00Uhr im Chat channel #selfhtml. Also, der, in den man sowieso reinkommt, wenn man hier den JavaClient benutzt. Ich werde mich, soweit möglich, Graphity nennen. Wenn das nicht geht, Graph. Und wenn das nicht geht... muß ich mal kucken :-)
Bis später
Graphity
Stell Dir vor, es ist Chat und keiner geht hin...
Also, dann halt über's Board:
Ich habe 2 Frames
Links sind viele Eingabefelder mit verschiedenen Namen (37 an der Zahl)
Rechts stehen die Namen (>20), die man in diese Felder eintragen kann.
Die Namen sind natürlich nach dem Alphabet geordnet.
In das erste Feld im linken Frame wird der Name eingetragen, der als erstes gedrückt wird. Im zweiten Feld im linken Frame wird der Name eingetragen, der als zweites angeklickt wird, egal ob dieser Name davor oder danach steht.
Diesmal gecheckt? *hoff*
Adios
Graphity
gruss Graphity,
Stell Dir vor, es ist Chat und keiner geht hin...
Also, dann halt über's Board:
na also - geht doch,
und deshalb bemuehe ich mich an dieser
stelle, Dir weiterhin zur seite zu stehen;
In das erste Feld im linken Frame wird der Name
eingetragen, der als erstes gedrückt wird. Im
zweiten Feld im linken Frame wird der Name eingetragen,
der als zweites angeklickt wird, egal ob dieser Name
davor oder danach steht.
»»
Diesmal gecheckt? *hoff*
ja - habe verstanden;
und trotzdem moechte ich noch einmal kerkis vorschlag
aufgreifen, der uns die verwendung von dropDown-listen
ans herz legt:
in dieser richtung habe ich gestern abend mal
was geschrieben - die dropdowns in diesem bsp.
sind aber sehr strikt und lassen eine doppelte
namensbelegung nicht zu - mehr dazu spaeter;
jetzt zum richtig verstandenen problem
- loese es folgendermassen:
fuer jeden button-click im rechten frame rufst Du
ein script auf, das Deine texteingabefelder im
linken frame auf den ersten leeren eintrag
(value == "") hin untersucht - diesem feld wird
dann durch dasselbe script der name des DHA
(diensthabender arzt) uebergeben - fertig;
ein eigenmaechtiges manuelles fuellen der felder
verhinderst Du durch das setzen des attributes
[disabled] (MSIE only) und/oder durch einen
event-handler folgender art in jedem dieser felder:
[onfocus="top.focus()"] denn [onfocus=this.blur()]
verstehen einige aeltere browser noch nicht;
damit hast Du natuerlich noch nichts gegen drohende
falsche eingaben durch simples "verklicken" getan !!
und da ich mir gestern abend schon arbeit gemacht
habe, musst Du jetzt auch das ergebnis ansehen -
zusammen mit den codestuecken aus den ersten beiden
vorschlaegen und dem jetzigen dritten, solltest Du
jetzt zum ziel kommen:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>clickDenDoktorSelectType.html</title>
<script language="JavaScript" type="text/javascript">
<!--
// dha: DienstHabenderArzt
var dhaArray = [["Margit Schneider"],["Marko Schulze"],["Britta Mahlow"],["Boris Mueller"],["Susanne Buergel"],["Stefan Blaschke"],["Romy Pippig"],["Ronald Pfitzner"]];
function getStringFromInteger(currNumber,lengthOverAll) {
currNumber = currNumber+""; //currNumber = currNumber.toString();
while (currNumber.length < lengthOverAll) {
currNumber = "0" + currNumber;
}
return currNumber;
}
function getTheDoctors() {
var myTdHeight = 30;
var myText = '<table cols="1" rows="' + (dhaArray.length+1) + '" height="' + ((dhaArray.length+1)*myTdHeight) + '" cellspacing="0" cellpadding="0" border="0">\n'
for (var i=0;i<dhaArray.length;i++) {
myText += '<tr>\n\t<td height="' + myTdHeight + '" align="right" valign="top">\n\tdiensthabender Arzt ' + getStringFromInteger((i+1),3) + ' : <select name="dha' + (i+1) + '" size="1" onchange="checkSelectedDoctor('dha' + (i+1) +'')">\n';
myText += '\t<option value="" selected />\n';
for (var k=0;k<dhaArray.length;k++) {
myText += '\t<option value="' + dhaArray[k] + '" />' + dhaArray[k] + '\n';
}
myText += '\t</select>\n\t</td>\n</tr>\n';
}
myText += '<tr>\n\t<td height="' + myTdHeight + '" align="right" valign="bottom"><input type="submit" value="liste schicken"></td>\n</tr>\n';
myText += '</table>';
/* var myWindow = window.open("","","width=300,height=350");
myWindow.document.open("text/html");
myWindow.document.write(myText);
myWindow.document.close();*/
return myText;
}
function checkSelectedDoctor(dhaFieldName) {
var myForm = document.forms["selectedDoctors"];
var myField = myForm.elements[dhaFieldName];
// alert(dhaFieldName + "[" + myField.options[myField.selectedIndex].value + "]");
var dhaName = myField.options[myField.selectedIndex].value;
var currFieldName = null;
var currField = null;
for (var i=0;i<dhaArray.length;i++) {
currFieldName = "dha" + (i+1);
currField = myForm.elements[currFieldName];
// if (dhaFieldName != currFieldName) {alert("equal");}
if (dhaFieldName != currFieldName) {
if (dhaName == currField.options[currField.selectedIndex].value) {
currField.options[0].selected = true;
break;
}
}
}
}
function checkForm() {
var myForm = document.forms["selectedDoctors"];
var currFieldName = null;
var currField = null;
for (var i=0;i<dhaArray.length;i++) {
currFieldName = "dha" + (i+1);
currField = myForm.elements[currFieldName];
if (currField.options[currField.selectedIndex].value == "") {
alert("bitte alle felder ausfuellen");
currField.focus();
return false;
break;
}
}
alert("alles ok");
return true;
}
//-->
</script>
</head>
<body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<table cols="1" rows="1" width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td align="center" valign="middle">
<form name="selectedDoctors" onsubmit="return checkForm()" action="about:blank" target="_blank">
<script language="JavaScript" type="text/javascript">document.write(getTheDoctors());</script>
</form>
</td>
</tr>
</table>
</body>
</html>
(MSIE4.x++/NNAV4.x++ - im N6 passiert nichts - ist eben nur ein beispiel)
tschuess und by(t)e by(t)e - peterS. - pseliger@gmx.net
Hallo !
Stell Dir vor, es ist Chat und keiner geht hin...
Tja, irgendwann muss selbst ich schlafen! :-)
Ich habe 2 Frames
Links sind viele Eingabefelder mit verschiedenen Namen (37 an der Zahl)
Rechts stehen die Namen (>20), die man in diese Felder eintragen kann.
Die Namen sind natürlich nach dem Alphabet geordnet.
In das erste Feld im linken Frame wird der Name eingetragen, der als erstes gedrückt wird. Im zweiten Feld im linken Frame wird der Name eingetragen, der als zweites angeklickt wird, egal ob dieser Name davor oder danach steht.
Diesmal gecheckt? *hoff*
Ich glaube, ich hatte das Problem bereits beim allerersten Mal verstanden.
Dennoch kann ich im Moment nur mit Folgendem dienen:
Für die Liste mit den Ärztenamen habe ich ein <select>-Element genommen und nicht verschiedene Buttons. Dies macht bei der Bedienung keinen Unterschied, ist aber m.E. viel einfacher zu "programmieren", weil man einfach den Wert nur eines Element abfragen muss und nicht zig Elemente auf ihren jeweiligen Wert.
Nun habe ich neben die eigentlichen Text-Eingabefelder für die Ärztenamen jeweils einen kleinen Zusatzbutton gesetzt, der den jeweils selektierten Namen aus der Auswahlliste in das Textfeld übernimmt.
Mit 2 Klicks pro Eintrag ist man damit also am Ziel.
Hier der komplette Quellcode:
---------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<title>Titel</title>
<style type="text/css">
body { font-size:100%; font-family:Verdana, Arial, sans-serif; background-color:#ffffff; }
h1 { font-size:105%; }
</style>
<script type="text/javascript">
<!--
function variante1 (zielfeld) {
document.getElementById("feld"+zielfeld).value = document.getElementById("quelle").options[document.getElementById("quelle").selectedIndex].value;
}
//-->
</script>
<h1>Variante 1 :</h1>
<table width="100%">
<tr align="left">
<th>Ziel:</th>
<th>Quelle:</th>
<tr valign="top">
<td>
<form action="form_optionen.html" method="get" id="ziel">
<table>
<tr><td>Raum 1:
<button type="button" onclick="variante1(1);">-></button>
<input name="r1" id="feld1" type="text"></td></tr>
<tr><td>Raum 2:
<button type="button" onclick="variante1(2);">-></button>
<input name="r2" id="feld2" type="text"></td></tr>
<tr><td>Raum 3:
<button type="button" onclick="variante1(3);">-></button>
<input name="r3" id="feld3" type="text"></td></tr>
<tr><td>Raum 4:
<button type="button" onclick="variante1(4);">-></button>
<input name="r4" id="feld4" type="text"></td></tr>
<tr><td>Raum 5:
<button type="button" onclick="variante1(5)">-></button>
<input name="r5" id="feld5" type="text"></td></tr>
</table>
</form>
<td>
<select id="quelle" size="8">
<option value="Hans Meier" selected>Hans Meier</option>
<option value="Klaus Schmidt">Klaus Schmidt</option>
<option value="Theo Müller">Theo Müller</option>
<option value="Vera Schulze">Vera Schulze</option>
<option value="Thomas Wolters">Thomas Wolters</option>
<option value="Ottfried Krause">Ottfried Krause</option>
<option value="Leo Buchholz">Leo Buchholz</option>
<select>
</td>
</tr>
</table>
---------------------------------------------------------------------
Entscheidend ist nur die 1 Zeile JavaScript-Code
document.getElementById("feld"+zielfeld).value = document.getElementById("quelle").options[document.getElementById("quelle").selectedIndex].value;
i.e.: "Lies den Namen aus der rechten Liste (Quelle) und setze ihn in das Textfeld (feld1, feld2 usw.)"
(Frames habe ich bei meinem Vorschlag jetzt gar nicht berücksichtigt, weil das die Ansprache der Felder nur komplizierter macht. Prinzipiell müsste es mit Frames aber genausogut funktionieren.
Funktionieren wird das Beispiel zudem nur im IE6 und Mozilla 0.9.5 wegen der Ansprache der Elemente über die ID, aber auch das hat nur mit meiner Bequemlichkeit zu tun)
Die von dir gewünschte 1-Klick Variante ist etwas komplizierter, weil man sich ja durchaus _ver_-klicken kann, so dass ein simples Springen von einem Feld zum nächsten allein m.E. nicht taugt.
Aber vielleicht fällt mir dazu noch etwas ein. Wenn, dann melde ich mich auf jeden Fall noch 'mal.
Gruß,
kerki
Hallo !
Ich hab' jetzt noch ein bißchen 'rumgebastelt und dabei ist dies herausgekommen:
---------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<title>Titel</title>
<style type="text/css">
body { font-size:100%; font-family:Verdana, Arial, sans-serif; background-color:#ffffff; }
h1 { font-size:105%; }
</style>
<script type="text/javascript">
<!--
function set() {
var zaehler = 1;
document.getElementById("dummy").value=zaehler;
document.getElementById("feld"+zaehler).focus();
}
function setzezaehler(czaehler) {
document.getElementById("dummy").value=czaehler;
}
function variante2a(zielfeld) {
document.getElementById("feld"+zielfeld).value = document.getElementById("quelle").options[document.getElementById("quelle").selectedIndex].value;
var zaehler = zielfeld+1;
if ( zaehler==6 ) zaehler=1;
document.getElementById("feld"+zaehler).focus();
document.getElementById("dummy").value = zaehler;
}
function variante2b() {
var zaehler = document.getElementById("dummy").value;
document.getElementById("feld"+zaehler).value = document.getElementById("quelle").options[document.getElementById("quelle").selectedIndex].value;
zaehler++;
if ( zaehler==6 ) zaehler=1;
document.getElementById("feld"+zaehler).focus();
document.getElementById("dummy").value = zaehler;
}
//-->
</script>
<body onload="set();">
<h1>Variante 2 :</h1>
<table width="100%">
<tr align="left">
<th>Ziel:</th>
<th>Quelle:</th>
<tr valign="top">
<td>
<form action="form_optionen.html" method="get" id="ziel">
<table>
<tr><td>Raum 1:
<button type="button" onclick="variante2a(1);">-></button>
<input name="r1" id="feld1" type="text" onclick="setzezaehler(1);"></td></tr>
<tr><td>Raum 2:
<button type="button" onclick="variante2a(2);">-></button>
<input name="r2" id="feld2" type="text" onclick="setzezaehler(2);"></td></tr>
<tr><td>Raum 3:
<button type="button" onclick="variante2a(3);">-></button>
<input name="r3" id="feld3" type="text" onclick="setzezaehler(3);"></td></tr>
<tr><td>Raum 4:
<button type="button" onclick="variante2a(4);">-></button>
<input name="r4" id="feld4" type="text" onclick="setzezaehler(4);"></td></tr>
<tr><td>Raum 5:
<button type="button" onclick="variante2a(5);">-></button>
<input name="r5" id="feld5" type="text" onclick="setzezaehler(5);"></td></tr>
<tr><td><input type="reset" onclick="set();"></td></tr>
</table>
</form>
<td>
<select id="quelle" size="8" ondblclick="variante2b()">
<option value="Hans Meier" selected>Hans Meier</option>
<option value="Klaus Schmidt">Klaus Schmidt</option>
<option value="Theo Müller">Theo Müller</option>
<option value="Vera Schulze">Vera Schulze</option>
<option value="Thomas Wolters">Thomas Wolters</option>
<option value="Ottfried Krause">Ottfried Krause</option>
<option value="Leo Buchholz">Leo Buchholz</option>
<select>
</td>
</tr>
</table>
<input id="dummy" type="text">
</body>
---------------------------------------------------------------------
Gegenüber der ersten Variante in meinem vorigen Posting kann man jetzt auch nur durch Auswählen in der Liste die Textfelder der Reihe nach füllen. Dies allerdings nur über Doppelklick, damit man auch weiterhin die Namen auch nur selektieren kann für spätere Korrekturen.
Ich hoffe, man kann den Quellcode halbwegs nachvollziehen. Wenn nicht, bitte nachfragen.
Diesmal gecheckt? *hoff*
Wenn es das jetzt nicht war, dann nicht. *g*
Gruß,
kerki
Habe ganz oben meinen Dank an euch ausgeschrieben und wie ich das Problem gelöst habe
Hallo!
Nur 'mal so am Rande:
Nun wollte ich, daß im rechten Frame die Namen als Buttons angezeigt werden, so daß man auf den Namen klickt und links in das Formular wird genau dieser Name eingetragen. So kann ich verhindern, daß Namen falsch geschrieben werden.
Würde es dein Problem nicht erheblich vereinfachen, wenn du anstelle der verschiedenen Buttons hier Auswahllisten für die Namen der Ärzte verwendest?
Gruß,
kerki
hallo again,
Hallo!
»»
Nur 'mal so am Rande:
Würde es dein Problem nicht erheblich vereinfachen, wenn du
anstelle der verschiedenen Buttons hier Auswahllisten für die
Namen der Ärzte verwendest?
»»
Gruß,
»»
kerki
und auch mit diesem vorschlag liegt
kerki alles andere als daneben;
bis bald - peterS. - pseliger@gmx.net
Servus
Hab den Unterthread gerade erst entdeckt *tomaten-auf-den-augen-hab*.
Das problem bei diesen Auswahllisten wäre es, das immer nur ein Name dastehen könnte. Es kann aber auch passieren, daß mal zwei Namen da stehen.
Ich habe mir gedacht, daß der erste Name reinopiert wird und falls doch ein weiterer Name da stehen soll, dann kann der immernoch per Hand eingetragen werden. Deswegen die text-Felder.
Aber ich hab's ja schon gelöst. Dieses Prob zumindest. Jetzt stehe ich vor einem anderen...
cu
Graphity
Hallo !
Hab den Unterthread gerade erst entdeckt *tomaten-auf-den-augen-hab*.
Das problem bei diesen Auswahllisten wäre es, das immer nur ein Name dastehen könnte. Es kann aber auch passieren, daß mal zwei Namen da stehen.
Ich habe mir gedacht, daß der erste Name reinopiert wird und falls doch ein weiterer Name da stehen soll, dann kann der immernoch per Hand eingetragen werden. Deswegen die text-Felder.
Diese Problemstellung sollte mit beiden von mir geposteten Beispielen auch zu machen sein. Es werden ja nur vorgebene Texte in ein normales Textfeld hineinkopiert.
Im Moment geschieht dies zwar nur durch ersetzen, aber auch ein "Anfügenmodus" sollte ohne Probleme machbar sein.
Vielleicht schaust du dir meinen Ansatz noch einmal an </?m=5376&t=712>.
Aber ich hab's ja schon gelöst. Dieses Prob zumindest. Jetzt stehe ich vor einem anderen...
Das da wäre? :-)
Gruß,
kerki
Jo, Leute. Ich bedanke mich recht herzlich bei euch allen für euer mitzittern, mit schreiben und Ideensammeln.
Ich habe mein Problem gelöst und poste es nun hier hinten dran. Falls ich euch in Sachen PHP/JavaScript/MySQL/Apache/HTML/Flash ActionScript und und und helfen kann, gebt bescheid.
Hier nun meine Lösung:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Ärzte</title>
</head>
<body>
<a href="einteilungsplan/menue-rechts.php" target="Menurechts">Zurück</a> zum Menü.<br>
<script language="php">
$link = mysql_connect ("localhost")
or die ("Could not connect <br>");
mysql_select_db("xxx");
$aerzte = @mysql_query("SELECT name FROM xxx ORDER BY name");
echo '<form name="NamenSenden">';
echo '<table><tr><th colspan="2">Namen</th></tr>';
echo '<tr><td align="right">';
echo ' <input type="button" name=" " value="leer" onClick="InFeldEinfuegen(this.name);">';
echo '</td></tr>';
echo '<tr><td> </td></tr>';
while($row = mysql_fetch_array($aerzte))
{
echo '<tr><td align="right">';
echo ' <input type="button" name="', $row["name"],'" value="', $row["name"],'" onClick="InFeldEinfuegen(this.value)">';
// echo $row["name"];
// echo '</td><td>';
// echo '<input type="checkbox">';
echo '</td></tr>';
}
echo '</table>';
echo '</form>';
mysql_close ($link);
</script>
<script language="JavaScript" type="text/javascript">
<!--
function NaechstesLeereFeld() //nächstes leere Feld suchen
{
var ArztNummer = 0;
for(ArztNummer=1;ArztNummer<37;ArztNummer++) //alle input-Felder Namens arzt# werden durchsucht
{
var Feld = parent.Formular.document.forms["ETPFormular"].elements["arzt" + ArztNummer];
if(Feld.value == "") //falls Feld leer ist, wird
{
return Feld; //der Feldname zurückgegeben und die Fktn beendet
break;
}
}
}
function InFeldEinfuegen(Wert)
{
var leeresFeld = NaechstesLeereFeld(); //nächstes leere Feld in leeresFeld speichern
leeresFeld.value = Wert; //nächstes leere Feld mit Wert füllen
}
//-->
</script>
</body>
</html>