"We are back" « oc.at

JavaScript Events selber auslösen

Yeahman 25.11.2002 - 16:19 863 9
Posts

Yeahman

OC Addicted
Avatar
Registered: Jul 2001
Location: on top of my sol..
Posts: 1775
Ich möchte im onFocus Event von einer DropDownList, die Breite von jenigerwelchen verändern, und diese gleichzeitig aufklappen.
Ich hätt mir gedacht selber noch ein onClick hinterher zu jagen.

Weiss wer wie das geht?

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
ich glaube das aufmachen der box ist nicht möglich. "onClick" usw.. sind nur User-EventHandler (erzeugt das system um dem user gelegenheit zur reaktion auf ein systemereignis zu ermöglichen) - es sind keine System-EventHandler (wo das System auf Events wartet, das tut es zb in der windows message queue).

du kannst die user-handler aufrufen aber es hat nicht den effekt eines mausklicks.

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
darf man fragen was das werden soll ?

Yeahman

OC Addicted
Avatar
Registered: Jul 2001
Location: on top of my sol..
Posts: 1775
ganz einfach, ich hab eine DropDownliste von der nur der "Pfeil" sichtbar ist, wenn der User den Focus drauflegt, soll sie aufgehen der User was auswählen, das wird in die Textbox deneben übernommen, und dann wenn der Focus wieder verloren gehn, soll das Ding wieder schmal werden.

Problem: Ich krieg das onFocus, mach die Liste breiter, aber dann muss der User nochmal klicken, um sie zu öffnen, und das werden unsere Verkäufer sehr bald bemängeln.

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
die liste breiter machen mit onmousedown

Yeahman

OC Addicted
Avatar
Registered: Jul 2001
Location: on top of my sol..
Posts: 1775
vielleicht bin ich zu blöd aber des geht auch nicht:

<html>
<head>
<script language="javascript">
<!--
function test(id)
{
id.parentElement.style.width="50%"
}
-->
</script>
</head>
<body>
<table style="width:100%">
<tr>
<td style="width:20px">
<select ID="t1" style="width:100%" onMouseDown="javascript:test(this)">
<option>test1</option>
<option>test2</option>
<option></option>
</select>
</td>
<td>
<input ID="t2" type="text" style="width:100%">
<td>
</tr>
</table>
</body>
</html>

der onClick dürft immer noch vorher kommen, weil die Liste kurz aufflackert.
Bearbeitet von Yeahman am 26.11.2002, 12:53

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
workaround: ccs-layer der eingeblendet wird, und dropdown-liste simuliert.

Yeahman

OC Addicted
Avatar
Registered: Jul 2001
Location: on top of my sol..
Posts: 1775
geht auch nicht so einfach, weil das eine ASP.NET DropDownliste ist, wo ich nach dem postback das selecteditem brauch, und selber schreiben funktioniert auch nicht wirklich (aus Zeitgründen).

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
dann verwende eine ASP.NET select-liste auf einem unsichtbaren css-layer, den du einblendest, sobald jemand auf ein pfeil-image klickt, und ausblednest, wenn er was ausgewählt hat.

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
edit: bledsinn... :rolleyes: sorry

edit2: doch noch was gefunden...
und zwar: du kannst beim mouseover eine liste aus dem dropdown machen, so ca:
Code:
<script type="text/javascript">
<!--
var Breite = 3;
function erweitern() {
  Breite = 10;
  document.getElementsByName("Eingabe")[0].size = Breite;
}
function normal() {
  Breite = 1;
  document.getElementsByName("Eingabe")[0].size = Breite;
}
//-->
</script>
<form name="Formular">
Geben Sie Text ein:<br>
<select size="1" name="Eingabe" onMouseout="normal()" onMouseOver="erweitern()">
<option value=1>AKarli</option>
<option value=2>BKarli</option>
<option value=3>CKarli</option></select>
</form>

edit3: sinnvollerweise solltest du sie aber per css fix positionieren, damit sie das ganze andere zeug nicht verschiebt... ;)
keine ahnung ob das im netscape genauso 'gut' funktioniert wie im ie ;)
Bearbeitet von watchout am 27.11.2002, 18:43
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz