gICAPI.SetFocus()

The gICAPI.SetFocus() function must be used to request the focus to the runtime system.

Purpose of gICAPI.SetFocus()

The tabbing order and focus management is controlled by the runtime system and the dialog code (NEXT FIELD).

If your WEBCOMPONENT field receives an event that requests the focus, you must first perform a gICAPI.SetFocus() call to determine if the program can put the focus in the field.

Focus acknowledgment

The gICAPI.SetFocus() function is used in conjunction with the gICAPI.onFocus() callback function. If the program can give the focus to the field, gICAPI.onFocus() is called with true as parameter. The gICAPI.onFocus() is not called if one of the following conditions is true:

  • the current field cannot release the focus because it does not satisfy constraints (VERIFY, data type conversion, and so on),
  • the dialog code logic prevents focus change (AFTER FIELD ..., NEXT FIELD, etc).

A good practice is to define an internal flag, to know if your WEBCOMPONENT field has gained the focus.

Example

The following code example uses the gICAPI.SetFocus() function to get the focus from the runtime system:

var has_focus = false;
var field1 = {};

var onICHostReady = function(version) {

    ...

    field1 = document.getElementById("field1");

    field1.addEventListener('focus', (event) => {
        if (has_focus === false) {
            gICAPI.SetFocus();
        }
    });

    gICAPI.onFocus = function(polarity) {
        has_focus = polarity;
        if (has_focus === true) {
            field1.focus();
        }
    }

    ...

};