1

我有一个以 select1 提示开头的重复组,组中的其他问题基于从 select1(相关项)中选择的项目。select1 中的每个项目都是强制性的,并且应该只被询问一次。如何验证没有再次选择项目。是否有某种机制可以避免选择已选择的项目。我已将 select1 定义为

<select1 appearance="minimal" ref="/data/ITEMLIST">
<label ref="jr:itext('/data/listlabel:label')"/>
  <item>
    <label>मसिनो चामल</label>
    <value>FRICE</value>
  </item>
  <item>
    <label>खस्रो चामल</label>
    <value>CRICE</value>
  </item>
       '
       '
       '
4

1 回答 1

0

您可以:

a) 使用约束进行验证,例如

constraint="not(selected(/path/to/previous/question, .))"

b) 使用从呈现给用户的选项列表中排除先前选择的值的 XPath 谓词,参见例如此表单(将其上传到http://opendatakit.org/xiframe/以获取 XForm)。

c)只是一个想法,尚未测试,可能是错误的:也许用当前值计算所有其他答案并添加约束以确保这不超过 1。例如

constraint="count(/path/to/repeated[question = current()/.]) <= 1"

请注意,目前 JR/ODK 中存在一个谓词错误,因此最好测试这是否在 Enketo 中有效。他们正在努力修复 JR 中的错​​误。

于 2015-07-15T15:05:16.623 回答