pl-string-input元件¶
填写允许输入字符串值的空白字段。
样品元素¶

<pl-string-input answers-name="string_value" label="Prairie"></pl-string-input>
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" 使匹配不区分大小写。
例如,此问题接受任意大小写组合的 N 或 nitrogen,并拒绝其他任何内容:
<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 元素的行为不同。
示例实现¶
- [元素/字符串输入]