我怎样才能无需提交

问题描述:

我创建的形式为客户页面,我需要做验证客户的名称,如我怎样才能无需提交

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. 
+0

请不要打扰#4(“防止客户端导航”),它会导致用户的糟糕的UI体验。 –

是的,你可以通过使用Dynamic Action创建服务器端验证创建的Oracle APEX服务器端实时验证和JavaScript功能apex.server.process

一个基本的例子,以demonstrate-

  • 例如创建页面项P4_NAME
  • 创建页面进程并选择执行点为“AJAX CALLBACK”。 enter image description here

在下面的代码,我检查P4_ITEM值,你可以写你自己的逻辑来验证。

BEGIN 
    IF :P4_NAME = 'HIMANSHU' 
    THEN 
     HTP.prn ('SUCCESS'); 
    ELSE 
     HTP.prn ('ERROR'); 
    END IF; 
END; 
  • 现在创建一个新的动态动作和选择事件为“失焦”,选择类型为“项目(S)”,并在项目(S)选择项目名称。

enter image description here

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

在代码段,实现apex.server.process像如下─

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

第一个参数是页面进程名(validate_name),其前面我们已经建立,第二要提交到过程中的数据和第三是选项。 有关apex.server.process的更多详细信息

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

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

+0

非常感谢,非常有帮助 –

+0

欢迎您!不要忘记标记这个答案有帮助。 – Himanshujaggi