Probleme Befehlsausführung

Dummfisch

Grünschnabel
Hallo,

ich habe eine Problem mit Java. Ich habe eine Checkbox mit einem OnClickevent verknüpft. Allerdings gibt es Probleme, wenn der User sehr schnell auf die Checkbox klickt, da dann die Funktion scheinbar nicht immer aufgerufen wird. Wie kann ich jetzt verhindern, dass der User die Checkbox zu schnell anklickt. Oder gibt es eine Art Befehlswarteschlange für Java, dass die Befehle nicht einfach "vergessen" werden, sondern einfach hintereinander abgearbeitet werden?

Es soll halt so sein, dass ich sicher sein kann, dass egal wie schnell der User auf die Checkbox klickt die mit OnClick aufgerufene Funktion immer ordentlich ausgeführt wird.
Ob das ganze jetzt per Befehlswarteschlange oder mit einer Verhinderung eines erneuten Aufrufs bis die vorhergehende Funktion nicht abgeschlossen ist, spielt keine Rolle.

Für jegliche Lösungsansätze bin ich jetzt schon dankbar.

MfG
 
Hi,

möglich wäre zum Beispiel, eine globale Variable zu definieren, die den Wert trueerhält, solange die
Funktion abgearbeitet wird. Am Ende der Routine wird sie wieder zurück gesetzt (false). Zudem wird die
Checkbox für die Dauer des Funktiosablaufs deaktivieret und am Ende der Funktion wieder aktiviert. Damit
wird gewährleistet, dass sich der Zustand der Box nicht ändert.
Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
var intI = 0;
var hTimer = null;
var blnWait = false;

function Wait(objChk){
  if(blnWait) return;

  blnWait = true;
  objChk.disabled = true;

  // Zu Testzwecken verzögerter Aufruf der Funktion, die am Ende Zustand zurücksetzt
  hTimer = window.setTimeout(function(){theFunc(objChk);}, 3000);
}

function theFunc(objChk){
  document.getElementById('outID').innerHTML = intI++;
  blnWait = false;
  objChk.disabled = false;
}
</script>
</head>
<body>
<input type="checkbox" onclick="Wait(this);" id="id_chk1">Wait()
<div id="outID"></div>
</body>
</html>
Vielleicht hilft dir das weiter.

Ciao
Quaese
 
Zurück