我有一个字段中的 onChange 事件的事件处理程序。如果字段中提供的密钥与现有文档匹配,我试图让它显示一个 Dojo 对话框,但如果尚未使用该密钥,则让它创建并保存一个没有用户输入的新文档。
这是事件处理程序的代码:
<xp:eventHandler event="onchange" submit="true"
refreshMode="norefresh" disableValidators="true"
onComplete="XSP.openDialog('#{id:dialog1}')">
<xp:this.action><![CDATA[#{javascript:var bundleID = getComponent("inputBundleID").getValue();
if (bundleID == "") {
return;
} else {
var noteID = @DbLookup(@DbName(),"AllBundlesID",bundleID,"$12");
if (@IsError(noteID)) {
viewScope.put("noteId","NEW");
} else {
viewScope.put("noteId",noteID);
}
};
document1.save();}]]></xp:this.action>
<xp:this.script><![CDATA[var bundleFieldId = '#{javascript:getClientId("inputBundleID")}';
var bundleId = document.getElementById(bundleFieldId).value;
if (bundleId == "") {
return false;
}
var trayFieldId = '#{javascript:getClientId("inputStorageTrayID")}';
var trayId = document.getElementById(trayFieldId).value;
if (trayId == "") {
alert('Storage Tray ID cannot be blank');
return false;
} else {
return true;
}]]></xp:this.script>
我尝试删除 onComplete 参数并将其添加到 this.action 部分下方:
<xp:this.onComplete><![CDATA[[#{javascript:if (viewScope.get("noteId") != "NEW") {
return XSP.openDialog('#{id:dialog1}');
} else {
alert('Create and save the document - TBD how to do it');
}}]]></xp:this.onComplete>
该代码给了我错误 [ReferenceError] 'XSP' not found。
在我确定如何自动创建文档之前,警报只是一个占位符。我觉得我错过了一些简单的东西。有一个更好的方法吗?谢谢。