目前apex的后端校验,即用户输入后,点击提交才触发与后端服务器的校验,为了提升用户体验,可以把这一步前置,用js事件触发后端校验,以监测用户名是否重复为例。
演示环境为 apex 20.2

建立Ajax process

DECLAREl_count NUMBER := 0;
BEGIN--名称重复校验IF :P5_1 IS NOT NULL THENSELECT COUNT(1)INTO l_countFROM 666 vWHERE v.1 = :P5_1AND ROWNUM = 1;IF l_count > 0  THENhtp.p('客户:' || :P5_1 || '已存在');ELSEhtp.p('success');END IF;END IF;--号重复校验IF :P5_2 IS NOT NULL THENSELECT COUNT(1)INTO l_countFROM 666 vWHERE v.2 = :P5_2AND ROWNUM = 1;IF l_count > 0  THENhtp.p('已存号为:' || :P5_2|| '的客户!');ELSEhtp.p('success');END IF;END IF;END;

先在process直接建立proce,然后位置选择 ajax,注意pl/sql要有返回值,后面的js需要根据返回值进行判断。
注意:htp.p打印的后面会有一个空格或者制表符,js判断时需要考虑进行字符串去空格操作。或者这个地方直接打印json也可以(参加文末勘误)

在对应的表单页项上建立动态操作

js事件选择 改变(onchange) 或者 失去焦点 (onblur),真操作为执行js代码

apex.server.process('ajax_validate_customer_repeat',//这儿的名称为process的名称{pageItems: '#P5_PARTY_NAME'//注意带#号},{dataType: 'text', success: function (data) {if (  /*data*/ data.trim() != 'success') {//用htp.p打印的后面带一个空格,不知道为啥,此处要注意,也可以用apex封装的api直接打印jsonapex.message.clearErrors();apex.message.showErrors([{type: "error",location: ["page", "inline"],pageItem: "P5_PARTY_NAME",message: data,unsafe: false}/*,{type: "error",location: "page",message: data,unsafe: false}*/]);}else {apex.message.clearErrors();}}}
)

效果如下

后续改进

可以把重复校验的单独封装成一个js函数

function repeat_validate(page_item_name) {apex.server.process('ajax_validate_customer_repeat',{pageItems: "#" + page_item_name},{dataType: 'text', success: function (data) {if (  /*data*/ data.trim() != 'success') {apex.message.clearErrors();apex.message.showErrors([{type: "error",location: ["page", "inline"],pageItem: page_item_name,message: data,unsafe: false}]);}else {apex.message.clearErrors();}}})
}

把上面这段js放到 页》JavaScript 》函数和全局变量声明 里面去。

然后在要验证的表单项上 高级》定制: οnchange=“repeat_validate(‘P5_XXX’);”

这样就实现了公用,不必再在此页项上定义动态操作了。

参考文档:

https://apex.oracle.com/pls/apex/germancommunities/apexcommunity/tipp/3341/index-en.html

https://www.foxinfotech.in/2020/04/oracle-apex-validation-without-submit-using-javascript-and-ajax-callback.html

json

不用动态操作实现

勘误

htp.p 、htp.print 、htp.prn 三者是有区别的:

HTP.p is a shortcut (undocumented) to htp.print. HTP. Print adds a new line to the output.
HTP. PRN does not add a line break.

htp.p和htp.print 会在后面自动多一个/n 新行
hpt.prn不会多/n

https://docs.oracle.com/database/121/ARPLS/w_htp.htm#ARPLS70586

oracle apex ajax process + dy 校验相关推荐

  1. Oracle APEX 系列文章7:Oracle APEX 18.1 新特性

    引言 千呼万唤始出来, Oracle APEX 18.1 新版本终于发布了,还不了解 Oracle APEX 是什么的同学请移步这里: Oracle APEX 系列文章1:Oracle APEX, 让 ...

  2. Oracle APEX 系列文章1:Oracle APEX, 让你秒变全栈开发的黑科技

    本文是钢哥的Oracle APEX系列文章中的第一篇,完整 Oracle APEX 系列文章如下:  - Oracle APEX 系列文章1:Oracle APEX, 让你秒变全栈开发的黑科技  - ...

  3. oracle apex global,Oracle Apex 实用笔记系列 1 - Oracle Apex 调试技巧

    1. 理解Oracle Apex Url语法 一个Oracle Apex Url例子看上去像下面: http://myhost.mycompany.com/myservice/f?p=1023:1:2 ...

  4. Oracle APEX初体验

    Oracle APEX是一个低代码开发平台.在主页中的介绍如下: Oracle APEX 是 Oracle 数据库完全支持的一项免费功能.这意味着,如果您拥有 Oracle 数据库,那么也就拥有了 O ...

  5. oracle apex 日志,Oracle Apex 调试技巧

    转自:https://blog.csdn.net/kswaking/article/details/40819125 先转载记录,定制信息调试和PL/SQL函数调用,后续再研究. 原文: 1. 理解O ...

  6. oracle apex 日志,Oracle Apex 实用笔记系列 1 - Oracle Apex 调试技巧

    1. 理解Oracle Apex Url语法 一个Oracle Apex Url例子看上去像下面: http://myhost.mycompany.com/myservice/f?p=1023:1:2 ...

  7. Oracle APEX 系列文章2:在阿里云上打造属于你自己的APEX完整开发环境 (准备工作)...

    本文是钢哥的Oracle APEX系列文章中的第二篇,完整 Oracle APEX 系列文章如下: Oracle APEX 系列文章1:Oracle APEX, 让你秒变全栈开发的黑科技 Oracle ...

  8. oracle 后台进程(background process)详解

    查看已运行background process $ps -ef | grep ora SQL> select name,description from v$bgprocess where pa ...

  9. 【快讯】呼伦贝尔市人民医院利用Oracle APEX快速开发预检分诊系统

    疫情期间,实施入口管控.患者分流.防止院内交叉传染是医院防控工作的重中之重. 内蒙古呼伦贝尔市人民医院信息科主任张布林借助Oracle APEX敏捷开发工具,仅用三天时间,为医院开发并上线了" ...

最新文章

  1. 网站实现个人支付宝即时到帐POST页面
  2. qt 提高图片加载速度
  3. Python 【好看视频】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、微信视频号等平台的视频自动化同步发布
  4. centos配置oracle自启,centos 下配置oracle11gR2开机自启
  5. [WPF]程序随系统自启动
  6. 锁定 ASP.NET 配置设定
  7. 关于机器学习的最佳科普文章:《从机器学习谈起》
  8. 【janio】janio ClassBodyEvaluator 的使用
  9. Eclipse中使用Gradle构建Java Web项目
  10. 软考软件设计师下午真题-面向对象的程序设计与实现-装饰设计模式(2012年上半年试题六))Java代码讲解
  11. php集成paypal接口,PayPal接口集成之:PHP集成PayPal标准支付接口
  12. oracle备份数据exp,oracle数据库备份之exp增量备份
  13. python的就业方向有哪些城市_【行业分析|听说你选择python后就业迷茫?Python就业方向都有哪些】- 环球网校...
  14. Java项目-黄金矿工
  15. matlab中taylor公式源代码,matlab实现两步taylor-galerkin算法
  16. 有关ddos详解及软件和方式
  17. 【数据结构】二叉树遍历
  18. github实用的搜索小技巧
  19. 图论:图的四种最短路径算法
  20. Excel将其他单元格的数据合并成一个单元格

热门文章

  1. Android12 ---- Material You 应用
  2. 计算机基础和photoshop的应用,一级计算机基础与Photoshop应用真题
  3. 【DataWhale学习】Day10~13-4章决策树——西瓜书学习摘录笔记
  4. 世界经典电影Top 50
  5. 怎样把旧电脑数据迁移到新电脑
  6. “讯飞杯”合肥市第三十届青少年信息学奥林匹克竞赛(小学组)试题
  7. 【ubuntu】Ubuntu系统下安装石墨文档
  8. sklearn.neighbors 最近邻相关算法,最近邻分类和回归
  9. CUDA计算能力的含义和计算能力表格
  10. DedeCMS织梦教程:菜鸟级基础问题解决方法大汇总