keyboarder: Auf Maus reagieren

Beitrag lesen

Hallo zusammen,

heute eine Frage zum Thema Maustaste. Es gibt einige Threads zu diesem Thema hier im Forum und auch über Google, aber nichts, was mich wirklich glücklich macht. Deshalb versuche ich es hier mit dieser Frage:

Es geht um eine Intranet-Anwendung, also Antworten wie "JS ist böse und kann man abstellen" oder "Der will seinen Code verstecken" zählen nicht ;-) Als Browser kommen IE und Firefox in Frage.

Ich habe Felder, die teilweise aus vielen Zeilen bestehen, von denen aber nur ein paar angezeigt werden. Mit einem Doppelklick auf eine Zeile wird ein neuer Datensatz in einem weiteren Fenster geöffnet.

Beispiel: Ich habe 100 Datensätze, und der Titel jedes Datensatzes wird in diesem Feld angezeigt. Ein Doppelklick auf einen Titel öffnet den dazugehörenden Datensatz. Das tut auch alles, wie es soll.

Jetzt werden aber von den 100 Datensätzen nur 3 Stück direkt angezeigt, weil das Feld nur 3 Zeilen hoch ist. Natürlich kann man scrollen, aber das ist recht mühsam.

Meine Idee ist jetzt folgende: Ich "rechtsklicke" in das Feld und es vergrößert sich automatisch, so dass deulich mehr Einträge zu sehen sind. Ein weiterer Rechtsklick setzt das Feld wieder auf die Originalgröße zurück.

Mit der linken Taste funktioniert das auch, aber ich schaffe es einfach nicht, das auf die rechte Maustaste zu beschränken.

Also noch einmal in Kurzform: Ich möchte in einem SELECT-Feld direkt einen onClick-Event für Rechtsklicks und einen onDblClick-Event für Linksdoppelklicks ansprechen.

Mein Ansatz sieht so aus:

  
<select id='FeldID' name='FeldName' onDblClick='openDoc(this)' onClick='resizeField(this)'> ... </select>  

Und hier die resize-Funktion:

  
var pickHuge = true;  
var pickOrgPosition;  
var pickOrgTop;  
var pickOrgHeight;  
function resizeField(e) {  
	if (!e)	e = window.event;  
	if ((e.type && e.type != "contextmenu") && (e.button && e.button != 1) && (e.which && e.which != 1)) return;  
  
	if (pickHuge) {  
		pickOrgPosition		= e.style.position;  
		pickOrgTop		= e.style.top;  
		pickOrgHeight		= e.style.height;  
  
		e.style.position	= "absolute";  
		e.style.top		= 10;  
		e.style.height		= 500;  
  
		pickHuge		= false;  
	} else {  
		e.style.position	= pickOrgPosition;  
		e.style.top		= pickOrgTop;  
		e.style.height		= pickOrgHeight;  
		pickHuge		= true;  
	}  
}  

Die Idee ist also, die Funktion sofort zu verlassen, wenn die linke Maustaste gedrückt wurde und auszuführen wenn die rechte Maustaste gedrückt wurde. Die Funkton selbst (also ab "if (pickHuge)") funktionert korrekt, wenn ich das ganze auf die linke Taste beschränke.

Kann mir jemand sagen, was ich tun muss, damit das Ganze so funktioniert wie ich es möchte?

Im Voraus vielen Dank für Eure Hilfe.

Gruß,

Keyboarder