用泛微提供的这个实现不了。
jquery(document).ready(function(){ jquery("#detailDiv_0").delegate("input[id^='field18420_']", "blur", function(){ var _thisValue = this.value; var str = ""; for(var i = 0; i < jquery("#nodesnum0").val(); i++){ if(jquery("#field18420_" + i).length == 0) continue; //如果元素被删除,则跳过 if(i == this.id.split("_")[1]) continue; //如果是本元素,则跳过 if(jquery("#field18420_" + i).val() == jquery(this).val()) { alert("数据重复"); return; } } }) });不知道你这个问题是否已经解决, 如果还没有解决的话:
亲测有效。
代码如下:
<script>
jQuery(document).ready(function () {
//如果不是pc流程表单或移动端流程表单中,则不执行下面逻辑
if (!(ecodeSDK.checkLPath('/spa/workflow/static4form/index.html#/main/workflow/req') || ecodeSDK.checkLPath('/spa/workflow/static4mobileform/index.html#/req'))) return;
let workflowid = "-1";
if (WfForm.getBaseInfo()) {
workflowid = WfForm.getBaseInfo().workflowid;
}
//如果流程路径id不是1110,则不执行下面逻辑
if (workflowid != 1110) return;
var checkCustomize = function () {
var arr = new Array();
var repeatAry = new Array();
var detailLineNum = WfForm.getDetailAllRowIndexStr("detail_1");//获取明细表2的所有行标
detailLineNum = detailLineNum.split(",");
detailLineNum.map(function (i) {
//浏览按钮字段取值方式
var th = WfForm.getBrowserShowName("field580516_" + i); //field580516_是待判断是否重复的明细表字段id
//单行文本字段取值方式
// var th = WfForm.getFieldValue("field580515_" + i);?
//选择框字段获取值方式
// var th = WfForm.getSelectShowName("field580517_" + i)
th && arr.push(th);
})
var arr = arr.sort();
for (var i = 0; i < arr.length - 1; i++) {
if (arr[i] == arr[i + 1]) {
repeatAry.push(arr[i]);
}
}
var array = [];
for (var i = 0; i < repeatAry.length; i++) {
if (array.indexOf(repeatAry[i]) == -1) {
array.push(repeatAry[i])
}
}
if (array.length != 0) {
var arrayStr = array.join(",");
WfForm.showConfirm("图号:<strong><font color='red'>" + arrayStr + "</font></strong>,存在重复值,请重新填写!", function () { });
return false;
}
return true;
}
window.checkCustomize = checkCustomize;
//绑定提交事件,点击提交按钮时触发明细表重复校验判断
WfForm.registerCheckEvent(WfForm.OPER_SUBMIT, function (callback) {
if (checkCustomize()) {
callback();
}
});
});
</script>