Blocking Unwanted Events
The nature of Web programming is that events are generally asynchronous. Asynchronous events
communicate between a browser and server without waiting for previous events to complete. The advantage
of this is that it can make the browser appear more responsive. The browser will not "freeze" up
waiting for the response of one event before allowing the user to do another action. The disadvantage
of this mechanism is that it can be difficult to manage events that depend on the response of previous events,
since it allows an event to be sent to the server before previous events have completed.
QCubed's event mechanism queues and synchronizes events, so that the results of each event are available
to the next event. This allows the browser to be responsive while also allowing events to perform
as expected in the program.
However, there are times when you may want an event to be a one-time event, preventing
all other events from even being added to the queue until a particular event is done
processing. The classic example of this is a submit button that allows a customer to process a payment for
a product. If the user accidentally presses the submit button more than once very quickly, multiple
submits will be sent to the server and the customer might then be charged more than once for the
same product.
You can tell an event to block other events by passing "true" to the $blnBlockOtherEvents parameter.
If the user tries to perform actions while the event is processed, the user's actions will be ignored
until the first event completes and a response is received by the browser.
This example here gives you two buttons, a regular button and a blocking button. Click each
button as quickly as you can to see how many events are processed by the server before the
server disables the button. To restart the demonstration, reload the page.