从另一个表单获取字段值以在 lotus notes 中在 web 上执行验证
Getting field values from another form to perform validation on the web in lotus notes
我在 Lotus Notes 表单(比如主表单)上有一个单选按钮字段。如果选择 "Yes",则 link 将取消隐藏。单击此 link,将打开另一个表单。如果在单选按钮中,在主窗体中选择"Yes",则必须填写第二个窗体中的内容。所以我需要写一个验证,如果单选按钮字段是 "yes" 并且第二个表单中的字段没有填写,那么它应该显示一个弹出窗口要求填写第二个表单中的字段。如何在主窗体上获取第二个窗体的字段值以供我执行验证?
你确实不能做你描述的你想做的事。当您想要对第一个表单的数据进行验证时,第二个(弹出)表单及其内容不再存在于客户端(浏览器)上下文中。解决问题的方法有3种,但实际可行的只有2种。
先抛开不切实际的方法吧。这将使弹出表单将某些内容写回其 parent/opener,作为 JavaScript 变量或作为 DOM 内容(Domino 表单或隐藏元素之外的字段或类似内容) ) 或者,也许作为 cookie 值。可靠地设置开启者关系可能是跨浏览器的问题,但它是可行的。问题是,无论您如何执行此操作,您都无法保证该值在您需要(或期望)时存在,除非最初填写父表单。如果文档曾经被编辑过,您将无法知道用户是否在弹出窗口中填写了数据。您可能在初始会话期间使用表单写入 JS 变量或 DOM 的任何内容仅在初始会话期间存在。 Cookie 不是永久性的;即使您尝试通过 expire 值赋予它们永生,它们也可以被用户清除。无论您如何操作,您都会告诉之前填写过您想要的数据的任何人他们需要再次填写。
第二种方法是回调服务器以查看弹出表单是否已提交并转换为 Notes 文档。那根本无法扩展;即使所有事情都发生在一台服务器上,也无法保证您要查找的文档在您需要时已经被写入和索引,并且涉及时间因素。如果用户已经看到验证唠叨一次,按照你告诉他们的去做,然后又遇到唠叨,你就没有交到任何朋友。
第三种方法是在一张表格上做所有你需要做的事情。 (如果你喜欢弹出式窗口,你可以使用 CSS 来实现弹出式窗口。)而且,你知道,你是否愿意这样做根本不重要换句话说,这是唯一可靠并让用户满意的方法。是的,这意味着您需要做一些额外的工作。您是一名开发人员——这就是您谋生的工作。您甚至可以保持现有应用程序的结构不变; WQO 和 WQS 代理意味着您可以在将文档发送给用户之前将它们粘合在一起,并在保存它们之前再次将它们分开。这是唯一保证足够快和足够可靠以在网络上可用的方法。
我在 Lotus Notes 表单(比如主表单)上有一个单选按钮字段。如果选择 "Yes",则 link 将取消隐藏。单击此 link,将打开另一个表单。如果在单选按钮中,在主窗体中选择"Yes",则必须填写第二个窗体中的内容。所以我需要写一个验证,如果单选按钮字段是 "yes" 并且第二个表单中的字段没有填写,那么它应该显示一个弹出窗口要求填写第二个表单中的字段。如何在主窗体上获取第二个窗体的字段值以供我执行验证?
你确实不能做你描述的你想做的事。当您想要对第一个表单的数据进行验证时,第二个(弹出)表单及其内容不再存在于客户端(浏览器)上下文中。解决问题的方法有3种,但实际可行的只有2种。
先抛开不切实际的方法吧。这将使弹出表单将某些内容写回其 parent/opener,作为 JavaScript 变量或作为 DOM 内容(Domino 表单或隐藏元素之外的字段或类似内容) ) 或者,也许作为 cookie 值。可靠地设置开启者关系可能是跨浏览器的问题,但它是可行的。问题是,无论您如何执行此操作,您都无法保证该值在您需要(或期望)时存在,除非最初填写父表单。如果文档曾经被编辑过,您将无法知道用户是否在弹出窗口中填写了数据。您可能在初始会话期间使用表单写入 JS 变量或 DOM 的任何内容仅在初始会话期间存在。 Cookie 不是永久性的;即使您尝试通过 expire 值赋予它们永生,它们也可以被用户清除。无论您如何操作,您都会告诉之前填写过您想要的数据的任何人他们需要再次填写。
第二种方法是回调服务器以查看弹出表单是否已提交并转换为 Notes 文档。那根本无法扩展;即使所有事情都发生在一台服务器上,也无法保证您要查找的文档在您需要时已经被写入和索引,并且涉及时间因素。如果用户已经看到验证唠叨一次,按照你告诉他们的去做,然后又遇到唠叨,你就没有交到任何朋友。
第三种方法是在一张表格上做所有你需要做的事情。 (如果你喜欢弹出式窗口,你可以使用 CSS 来实现弹出式窗口。)而且,你知道,你是否愿意这样做根本不重要换句话说,这是唯一可靠并让用户满意的方法。是的,这意味着您需要做一些额外的工作。您是一名开发人员——这就是您谋生的工作。您甚至可以保持现有应用程序的结构不变; WQO 和 WQS 代理意味着您可以在将文档发送给用户之前将它们粘合在一起,并在保存它们之前再次将它们分开。这是唯一保证足够快和足够可靠以在网络上可用的方法。