Hi,
ich habe ein Eingabefeld und ein Div. Im Div stehen Links, deren ID bei onclick in das Eingabefeld übergeben werden soll. Das Div soll ausgeblendet werden, wenn man
a) einen Link anklickt, oder
b) neben das Div klickt
Das mit dem Link klappt soweit einwandfrei:
<script type="text/javascript">
function insert_eingabe(id, div_id, txt_id)
{
var div = document.getElementById(div_id)
var txt = document.getElementById(txt_id)
if(txt && div)
{
txt.value = id;
div.style.visibility = 'hidden';
}
}
</script>
<input type="text" id="eingabe">
<div id="div">
<a id="1" href="#" onclick="insert_eingabe(id, 'div', 'eingabe')">Link 1</a><br>
<a id="2" href="#" onclick="insert_eingabe(id, 'div', 'eingabe')">Link 2</a><br>
<a id="3" href="#" onclick="insert_eingabe(id, 'div', 'eingabe')">Link 3</a><br>
</div>
Aber wie frage ich das "Danebenklicken" ab?
Ich dachte ich mache das, sobald das Eingabefeld den Focus verliert (es hat den Focus vorher, bei sichtbarem Div, *immer*):
<script type="text/javascript">
function schliessen(div_id)
{
var div_id = document.getElementById(div_id);
div_id.style.visibility = 'hidden';
}
</script>
<input type="text" id="eingabe" onblur="schliessen('div')">
<div id="div">
<a id="1" href="#" onclick="insert_eingabe(id, 'div', 'eingabe')">Link 1</a><br>
<a id="2" href="#" onclick="insert_eingabe(id, 'div', 'eingabe')">Link 2</a><br>
<a id="3" href="#" onclick="insert_eingabe(id, 'div', 'eingabe')">Link 3</a><br>
</div>
Dummerweise ist das "onblur" schneller als das "onclick", d.h. das Div ist weg, bevor der angeklickte Link registriert wird. Es wird beim Klick also das Div geschlossen und die ID nicht mehr übergeben.
Wie könnte ich sonst noch feststellen, ob irgendwo außerhalb des Divs geklickt wird?