需要帮助在将条形码扫描到Adobe表单中时自动从条形码中删除数据标识符



简短版本:我在一家医院工作,正试图创建一个更安全、更高效的停机时间版本的表格,我们将其与输血用血液成分一起发送。目前,我们在该表格上手写或键入捐献者识别号(DIN(和装置的产品代码,但理想情况下,这些都是扫描的,因为它们是装置上的ISBT 128条形码。

扫描DIN会给我~=W11512003927826-我想去掉前两个字符(非字母数字(,如果可能的话,去掉最后两个。我已经能够通过简单地限制字段的字符输入来完成第二项任务,这是标准的,应该可以很好地工作。

这也适用于产品代码,它扫描为~=<E0785V00,不需要前三个字符。

我尝试了一些方法,包括一些Javascript,它本应将字段限制为仅字母数字字符,我认为这可能是处理所有这些问题的最简单方法,但要么代码的语法不符合Adobe的正确语法,要么我实现错误。我对JS一点也不熟悉,只是在学习表单创建。

如果有人有什么建议,我将非常感谢任何帮助。提前感谢!

编辑:到目前为止,我已经试过这三种了。我在鼠标退出时使用这些操作(运行javascript(,也尝试过模糊。

const alphanumeric = /[a-zA-Z0-9]/g;
const string = "abc-ABC-012";
const result = string.match(alphanumeric).join("");
console.log(result); // abcABC012

const nonalphanumeric = /[_W]/g;
const string = "abc-ABC-012";
const result = string.replace(nonalphanumeric, "");
console.log(result); // abcABC012


const string = "aa-aa";
const result = string.slice(2, -2);
console.log(string); // aa-aa
console.log(result); // -

我建议您为每个需要接受扫描数据的字段设置"On Blur"事件处理程序。对于DIN字段,使用调整值

var field = this.getField("DINField");
field.value = field.value.replace(/^~=(.+)..$/, '$1');

上面的代码假定该字段名为DINField。酌情更改。使用RegExp之类的逻辑来修改值是很重要的,因为模糊事件可能会在每个字段中触发多次。上面的代码将只删除~=应用程序id和最后两个字符一次。

同样,对于产品id,将"on Blur"处理程序设置为:

var field = this.getField("ProductField");
field.value = field.value.replace(/^~=<(.+)$/, '$1');

上面的代码假定该字段名为ProductField。此reg ex只删除应用程序id(而不是最后两个字符(。

最新更新