PDF表单验证误将零判定为无效值的技术求助
解决PDF表单验证误判0为空的问题
你的问题出在文本字段的空值判断逻辑上——原代码用了松散相等运算符==,在JavaScript中0 == ""会被判定为true,导致输入0的必填文本字段被误识别为空字段。
只需要修改文本字段的判断条件,改用严格相等来检查是否为空字符串,同时兼容字段未赋值的null情况,就能让0成为有效值:
var emptyFields = []; for (var i=0; i<this.numFields; i++) { var f= this.getField(this.getNthFieldName(i)); if (f.type!="button" && f.required ) { // 修改文本字段的判断逻辑,排除0的情况 if ((f.type=="text" && (f.value === "" || f.value === null)) || (f.type=="checkbox" && f.value=="Off")) { emptyFields.push(f.name); } } } if (emptyFields.length>0) { app.alert("Error! You must fill in the following fields:\n" + emptyFields.join("\n")); }
关键修改说明
- 把原判断
f.value==""改成f.value === "" || f.value === null:- 严格相等
===不会进行类型转换,只有当字段值确实是空字符串时才判定为空 - 增加
f.value === null是为了兼容表单字段从未被编辑过的状态(此时字段值可能为null)
- 严格相等
这样修改后,无论是输入数字0还是字符串"0"的文本字段,都不会被误判为空,只有真正未填写的字段才会触发警告。
内容的提问来源于stack exchange,提问作者Jackson
相关产品推荐
相关产品推荐

