跳转至

pl-string-input元件

填写允许输入字符串值的空白字段。

样品元素

pl-string-input 元素的屏幕截图

question.html
<pl-string-input answers-name="string_value" label="Prairie"></pl-string-input>
server.py
def generate(data):

    # Answer to fill in the blank input
    data["correct_answers"]["string_value"] = "Learn"

定制

属性 类型 默认 描述
allow-blank 布尔 是否允许输入框为空。默认情况下,空输入框不会被评分(格式无效)。
answers-name 字符串 用于存储数据的变量名称。请注意,该属性在问题中必须是唯一的,即该属性的值不应在问题中重复。
aria-label 字符串 输入的可访问标签。
correct-answer 字符串 查看描述 正确答案可用于评分。默认为 data["correct_answers"][answers-name]
correct-answer-format "exact""regex" "exact" correct-answer 是作为文字字符串 ("exact") 进行比较还是解释为正则表达式 ("regex")。参见正则表达式匹配
display "block""inline" "inline" 如何显示输入字段。如果启用 multiline,则默认值为 "block"。当 multiline="true" 时,不能设置为 "inline"
ignore-case 布尔 对答案评分时是否忽略字母大小写(例如 hello 匹配 HELLO)。
initial-value 字符串 首次呈现时,初始值将添加到文本框。
label 字符串 显示在输入框之前的前缀(例如,label="$x =$")。
multiline 布尔 是否允许使用 textarea 显示器进行多行输入。
normalize-to-ascii 布尔 在提交文件进行评分之前,是否应将非英语字符(重音、非拉丁字母、花哨的引号)标准化为等效的英语字符。
placeholder 字符串 输入框中显示的提示描述了预期的输入类型。
remove-leading-trailing 布尔 查看描述 是否从输入字符串中删除前导和尾随空格。如果启用 multiline,则默认为 true,否则为 false
remove-spaces 布尔 是否从输入字符串中删除空格。
show-help-text 布尔 真实 在显示所需输入参数的输入末尾显示问号。
show-score 布尔 真实 是否在此元素旁边显示分数徽章。
size 整数 35 35输入框的宽度。
suffix 字符串 显示在输入框之后的后缀(例如,suffix="items")。
weight 整数 1 计算元素的加权平均分数时使用的权重。

从已弃用的属性迁移

为了向后兼容,仍支持以下已弃用的属性:

旧语法 新语法
escape-unicode="<value>" 省略属性

escape-unicode 属性被忽略。当需要显示提交的正确答案时,始终应用 Unicode 转义。

与正则表达式匹配

默认情况下,提交的答案通过与 correct-answer 作为文字字符串进行比较来评分。设置 correct-answer-format="regex" 会将 correct-answer 解释为 Python 正则表达式,当多个不同的响应都应被接受为正确时,这非常有用。

该模式必须匹配整个提交内容,而不仅仅是其中的一部分:评分使用Python的re.fullmatch(),这相当于用^()$包围该模式。要匹配子字符串,请在模式中包含 .*。设置 ignore-case="true" 使匹配不区分大小写。

例如,此问题接受任意大小写组合的 Nnitrogen,并拒绝其他任何内容:

question.html
<pl-string-input
  answers-name="element"
  correct-answer="N|nitrogen"
  correct-answer-format="regex"
  ignore-case="true"
></pl-string-input>

模式开头的内联标志控制匹配行为,例如 (?s) 以便 . 也匹配换行符,或 (?x) 忽略模式中的空格并允许 # 注释。除 re.IGNORECASE(由 ignore-case 设置)之外,没有可用的 Python re 标志。

在答案面板中,正确答案显示为其匹配的正则表达式。当设置 ignore-case 时,模式显示时带有前导 (?i) 标志,因此不区分大小写的匹配可见。由于模式并不总是向学生展示的友好答案,因此您可以添加具有更易读描述的 pl-answer-panel 元素。

如果 correct-answer 不是有效的正则表达式,则问题将无法生成并向问题作者报告错误。

使用多行输入

请注意,在多行输入中,很难区分带或不带终止换行符的输入(即,在输入末尾附加“Enter”)。因此,强烈建议您在使用多行输入时保留 remove-leading-trailing="true" 的默认设置不变。

此外,多行输入会将任何 CR LF(Python 中的 "\r\n")换行符标准化为单个 LF(Python 中的单个 "\n")。请注意,这与标准 textarea HTML 元素的行为不同。

示例实现

  • [元素/字符串输入]

参见