如何在无需提交页面的情况下创建 oracle apex 服务器端实时验证

Mon*_*med 1 oracle oracle-apex

我为客户创建了表单,我需要验证客户名称,例如

1 - type the new name into item P1_CUST_NAME.
2 - after leaving this item go to database and check if this name already exist or not. 
3 - display alert or message for the client.
4 - prevent the client from navigating a way from this item until he enter valid data.
Run Code Online (Sandbox Code Playgroud)

小智 5

是的,您可以使用Dynamic ActionJavaScript 函数创建服务器端验证apex.server.process

一个基本的例子来证明 -

  • 在您的页面中创建一个页面项目,例如 P4_NAME
  • 创建一个页面进程,选择执行点为“AJAX CALLBACK”。 在此处输入图片说明

在下面的代码中,我正在检查 P4_ITEM 值,您可以编写自己的逻辑进行验证。

BEGIN
   IF :P4_NAME = 'HIMANSHU'
   THEN
      HTP.prn ('SUCCESS');
   ELSE
      HTP.prn ('ERROR');
   END IF;
END;
Run Code Online (Sandbox Code Playgroud)
  • 现在创建一个新的动态动作并将事件选择为“LOSE FOCUS”,选择类型为“Item(s)”,并在Item(s) 中选择项目名称。

在此处输入图片说明

  • 创建一个真正的操作并选择“执行 JavaScript 代码”。

在代码部分,实现apex.server.process如下 -

apex.server.process('validate_name',
{
   pageItems : '#P4_NAME'
}
,
{
   dataType : 'text', success : function(data)
   {
      if(data != 'SUCCESS')alert(data);
   }
}
)
Run Code Online (Sandbox Code Playgroud)

第一个参数是我们之前创建的页面进程名称(validate_name),其次是您要提交给进程的数据,第三个是选项。有关apex.server.process 的更多详细信息

完成了。刷新页面并检查。验证失败时,您将收到警报。

您可以进一步自定义您的 JS 代码,以更奇特的方式显示错误消息,而不是显示警报。