XSL - und JS verbinden
A. Zipser
- xsl
0 MudGuard
Hi,
Ich habe eine Liste mit Adressen , daneben erscheint ein Formular in welches man seinen Standort (Strassse, PLZ, Ort) eingibt. Über 3 Buttons besteht nun die Möglichkeit sich eine Verbindung zu der Adresse anzeigen zu lassen (map24, db, kvb [kölner verkehrsbetriebe] ) man muß halt nur auf das entsprechende Symbol klicken.
Die Übergabe an die Routenplaner, etc.. erfolgt über versteckte Formularfelder. Diese sind statisch oder werden über xsl:attribut mit Werten aufgefüllt. Problem ist jetzt aber, dass einige Felder ein Datum und eine Zeit benötigen, und diese wird via JS eingefügt. Nun läuft das aber nicht.
Ausserdem erscheint in den Eingabefeldern die Beschreibung was in dem Feld zu stehen hat, beim onFocus verschwindet dieser Hinweis, und das Feld wird frei - das funktioniert auch nicht. Könnte mir jemand vielleich in diesem Falle helfen ?
Ich habe es mit yxsl:script > versucht, funktioniert aber nicht, und man soll aauch den namespace ändern, was wiederum weitere Probleme nach sich zieht.
Ich danke im voraus für die Hilfe, mit freundlichen Grüßen,
A. Zipser
Hier nun einige Ausschnitte aus den Dateien:
Die JS datei die die Werte in die Felder der Formulare einfügt:
************************
function timeInit()
{
Dat = new Date();
nachher = new Date(Dat.getTime()+(60000*15));
tag=((Dat.getDate() < 10) ? "0"+Dat.getDate() : Dat.getDate().toString());
mon= (((Dat.getMonth()+1) < 10) ? ".0"+(Dat.getMonth()+1)+"." : "."+(Dat.getMonth()+1)+".");
jahr=Dat.getFullYear().toString();
std=((Dat.getHours() < 10) ? " 0"+Dat.getHours() : " " + Dat.getHours().toString());
stdpl=((Dat.getHours()+2 < 10) ? " 0"+(Dat.getHours()+2) : " " + (Dat.getHours()+2).toString());
stdnach=((nachher.getHours()<10)?"0"+nachher.getHours():nachher.getHours().toString());
min = ((Dat.getMinutes() < 10) ? ":0"+Dat.getMinutes() : ":"+Dat.getMinutes().toString());
minnach=((nachher.getMinutes()<10)?":0"+nachher.getMinutes(): ":"+nachher.getMinutes().toString());
}
function zeitEinfueg()
{
timeInit();
var datum = tag + mon + jahr;
var uhrzeit = std + min;
document.assform.DATUM.value = datum;
document.assform.ZEIT.value = uhrzeit;
document.DBformular.date.value = datum;
document.DBformular.time.value = uhrzeit;
}
function checkenUndSenden()
{
document.link2map24.sstreet.value = document.startfelder.startStrasse.value;
document.link2map24.szip.value = document.startfelder.startPlz.value;
document.link2map24.scity.value = document.startfelder.startOrt.value;
document.assform.SHS.value = document.startfelder.startStrasse.value;
document.assform.SGE.value = document.startfelder.startOrt.value;
document.DBformular.from.value = document.startfelder.startOrt.value+' '+document.startfelder.startStrasse.value;
zeitEinfueg();
}
*************************
*****************************************
<input type="text"
name="startStrasse"
value="Strasse/Haltestelle"
class="map24_input"
size="20"
style="width: 179px;" >
<xsl:attribute name="onClick">
javascript:if (document.startfelder.startStrasse.value == 'Strasse/Haltestelle') document.startfelder.startStrasse.value = '';
</xsl:attribute><!-- so funktioniert es leider nicht-->
</input>
<BR/>
<input type="text"
name="startPlz"
value="PLZ"
class="map24_input"
size="5"
style="width: 36px;"
onFocus="javascript:if (document.startfelder.startPlz.value == 'PLZ') document.startfelder.startPlz.value = '';" />
<input type="text"
name="startOrt"
class="map24_input"
value="Köln"
size="20"
style="width: 140px;"
onFocus="javascript:if (document.startfelder.startOrt.value == 'Köln') document.startfelder.startOrt.value = '';" />
</form>
</TD>
...
<form action="http://bahn.hafas.de/bin/query.exe/dn" name="DBformular" method="POST" target="BahnPopup" onsubmit="checkenUndSenden()"><!-- hier wird nun das JS aufgerufen-->
<input type="hidden" name="timesel" value="depart" />
<input type="hidden" name="via.1" />
<input type="hidden" name="to" value="Köln" />
<input type="hidden" name="to" >
<xsl:attribute name="value">
<xsl:value-of select="Anfahrt/DB"/>
</xsl:attribute>
</input>
...
Hi,
<input type=text name="startStrasse" value="Strasse/Haltestelle" class=map24_input size=20 style="width: 179px;"
onFocus="javascript:if (document.startfelder.startStrasse.value == 'Strasse/Haltestelle') document.startfelder.startStrasse.value = '';">
woher kommt diese seltsame Angewohnheit, in Eventhandlern das Label javascript: unterzubringen?
Soweit ich weiß, gibt es Label erst in neueren Javascript-Versionen, ältere Javascript-Interpreter fallen hier also auf die Schnauze, weil sie diese Syntax nicht verstehen.
Und neuere kriegen vielleicht ein Problem, weil dasselbe Label zigmal verwendet wird ...
Sollte das nicht das Problem sein: definiere "es funktioniert nicht", sprich: welche Fehlermeldungen bekommst Du?
Außerdem:
Schau Dir das erzeugte HTML an, sieht das so aus, wie es aussehen soll? Sprich: liegt der Fehler in der XSL-Transformation oder liegt der Fehler im Javascript?
cu,
Andreas