Introduction

his process helps to enable the users to quickly find and select from a  list of values as they type, searching and filtering without Native text with auto-complete in APEX.

This process works fine with Apex 4 and 5 versions but not 18.

Procedures:

Steps in APEX :

Step 1 : Create a text field item P67_ENAME.

Step 2 : Copy Below code in to the HTML Header of the page.

<!doctype html>

<html lang=”en”>

<head>

<meta charset=”utf-8″>

<title>autocomplete demo</title>

<link rel=”stylesheet”       href=”//code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css    “>

<script src=”//code.jquery.com/jquery-1.12.4.js”></script>

<script src=”//code.jquery.com/ui/1.12.1/jquery-ui.js”></script>

</head>

 

Step 3 : a) Create an Application Process GET_NAMES.

  1. b) Change the Process Point to On Demand – Run this Process when                                                   requested by AJAX.
  2. c) Copy the Below PL/SQL Code as source.

 

Note : This Process returns values matching the literals typed in the text field item in the JSON Format.

DECLARE

CURSOR c_names(pc_term IN VARCHAR2)

IS

SELECT      ‘{“label”:”‘

|| ename

|| ‘”,”id”:”‘

|| empno

|| ‘”}’ ename

FROM emp

WHERE UPPER (TO_CHAR (ename)) LIKE

UPPER (‘%’ || pc_term) || ‘%’

ORDER BY 1;

 

l_num                NUMBER          := 0;

l_term               VARCHAR2 (4000);

 

BEGIN

l_term := apex_application.g_x01;

HTP.prn (‘[‘);

 

FOR rec IN c_names(l_term)

LOOP

IF l_num != 0

THEN

HTP.prn (‘,’);

END IF;

 

HTP.prn (rec.ename);

l_num := l_num + 1;

END LOOP;

 

HTP.prn (‘]’);

END;

 

ü  Step 4 :

 

  1. a) Create a dynamic action on change of P67_ENAME (Text Field).

  1. b) Create a True action as Execute Javascript Code and Check Fire on Page Load. Copy the below code.

Note : Below Javascript Code calls the AJAX Process whenever user types in the text field and passes the values to the process and displays the values in the textfield.

 

$( “#P67_ENAME” ).autocomplete({

source:

function(req, add){

//call the page process get_contact_data and put its return in greturn

//this process returns markup for a JSON object so this can easily be parsed in jquery

//x01: a temporary variable simply used for passing on a value

$.post(‘wwv_flow.show’,

{“p_request”      : “APPLICATION_PROCESS=GET_NAMES”,

“p_flow_id”      : $v(‘pFlowId’),

“p_flow_step_id” : $v(‘pFlowStepId’),

“p_instance”     : $v(‘pInstance’),

“x01”            : req.term

},

function(data){

if(data){

add($.parseJSON(data));

$(“#P67_ENAME”).removeClass(“ui-autocomplete-loading”);

}

else

{

$(“#P67_ENAME”).removeClass(“ui-autocomplete-loading”);

};

 

}

);

},

select: function(event, ui){

$(“#P67_ENAME”).val(ui.item.value);

// $(“#P26_EMPNO”).val(ui.item.value);

event.preventDefault();

},

delay: 500,

minLength: 1,

autoFocus: true

});

 

Summary

 

The Jquery will automatically convert the text field into the text field with auto complete item.

Recommended Posts

Start typing and press Enter to search