{
  "_description": "Generated from data/ — edit the sources, not this file. The agent access guide explains the evidence boundary of every field.",
  "schemaVersion": "1.0.0",
  "kind": "entry",
  "locale": "en",
  "id": "fill-in-the-blanks",
  "name": {
    "zh": "填空式输入",
    "en": "Fill in the Blanks"
  },
  "page": "https://designvocabulary.com/en/entries/fill-in-the-blanks/",
  "self": "https://designvocabulary.com/en/entries/fill-in-the-blanks.json",
  "alternates": {
    "zh-CN": "https://designvocabulary.com/zh/entries/fill-in-the-blanks.json",
    "en": "https://designvocabulary.com/en/entries/fill-in-the-blanks.json"
  },
  "site": {
    "catalogSchemaVersion": "0.1.0",
    "entries": 137,
    "index": "https://designvocabulary.com/en/entries/index.json",
    "query": "https://designvocabulary.com/api/query?lang=en",
    "guide": "https://designvocabulary.com/en/agents/",
    "llms": "https://designvocabulary.com/llms.txt"
  },
  "provenance": {
    "sourceBacked": [
      "entry.definition"
    ],
    "editorial": [
      "entry.boundary",
      "entry.signature",
      "entry.when",
      "entry.when_not",
      "entry.tradeoff",
      "entry.comparison",
      "entry.rules",
      "entry.relations",
      "entry.implementationNote",
      "entry.behavior"
    ],
    "scope": "Definitions reference these sources. Digital specimens, selection advice, relationships, and recipes are editorial work and have not been validated through user research.",
    "editorialStatus": "drafted",
    "specimenData": "fictional",
    "specimenNote": "Original fictional specimens. Definitions cite sources; usage advice and recipes are editorial.",
    "sources": [
      {
        "id": "fitb-ui-patterns",
        "url": "https://ui-patterns.com/patterns/FillInTheBlanks",
        "title": "UI Patterns · Fill in the Blanks design pattern",
        "checkedAt": "2026-09-16",
        "archive": {
          "status": "pending",
          "confirmed": false,
          "url": null,
          "capturedAt": null,
          "lookupUrl": "https://web.archive.org/web/20260916*/https://ui-patterns.com/patterns/FillInTheBlanks"
        }
      }
    ],
    "lists": [],
    "ordered": false,
    "listDisclaimer": "Seat numbers are editorial positions, not scores, rankings, or popularity measurements. A list that is not filled is left as it is."
  },
  "entry": {
    "id": "fill-in-the-blanks",
    "type": "interaction",
    "name": {
      "zh": "填空式输入",
      "en": "Fill in the Blanks"
    },
    "aliases": [
      "Natural Language Form",
      "Madlib Form",
      "自然语言表单",
      "句子式表单"
    ],
    "granularity": "component",
    "intents": [
      "prevent-error",
      "reduce-complexity"
    ],
    "tags": [
      "form",
      "input",
      "sentence",
      "context",
      "label"
    ],
    "definition": "Embedding input controls inside a sentence so that the completed line reads as a natural statement: each field’s meaning comes from its position in the sentence rather than from a separate label.",
    "boundary": "The test is that the sentence *is* the label, not that the form is written conversationally. It suits only a small number of fields that genuinely form one sentence; as soon as there are many, the sentence becomes a passage that must be read through and ends up slower than plain labels. It is also not natural-language input: the user still fills controlled fields, merely arranged as a sentence. The pattern depends on word order by its nature, and translation changes sentence structure and therefore field order, so a multilingual product must lay each language out separately rather than hard-coding control positions.",
    "signature": [
      "Controls and words alternate to make one readable sentence",
      "Fields carry no separate label and their meaning comes from the sentence around them",
      "Once filled, the sentence states what was entered"
    ],
    "when": [
      "Any label written for the field on its own fails to explain what it wants",
      "The label would be long and convoluted, while a sentence makes it obvious",
      "There are few fields and all are required, so a gap in the sentence invites completion"
    ],
    "when_not": [
      "There are many fields and the user must read a whole passage before starting",
      "Most fields are optional, where the gaps left in the sentence are unsettling",
      "The interface must support several languages yet field positions are fixed to one word order"
    ],
    "tradeoff": "The sentence does all the work of labels and hints, so understanding costs almost nothing; the price is scannability — the fields no longer align into a column, and the user cannot tell at a glance how many are left.",
    "comparison": {
      "focus": "Letting the sentence’s context say what each field wants",
      "mechanism": "Input controls embedded in running text",
      "cost": "Alignment and scannability are lost, and it depends on word order"
    },
    "sources": [
      {
        "id": "fitb-ui-patterns",
        "title": "UI Patterns · Fill in the Blanks design pattern",
        "url": "https://ui-patterns.com/patterns/FillInTheBlanks",
        "claim": "The pattern records \"natural language form\" as an alternate title and advises using it when a label written for an input does not really explain what it is about; when labels become long and complicated and so harder to understand; when the context of the field can be expressed by placing it in a sentence; and when filling the field is mandatory or strongly expected, since leaving parts of a sentence unfilled creates annoyance. It also warns that placing many fields in a sentence is tiresome because the structure forces the user to read every sentence, and says not to use it when many fields are optional. This entry paraphrases the applicable and inapplicable conditions from it.",
        "checkedAt": "2026-09-16",
        "archive": {
          "lookupUrl": "https://web.archive.org/web/20260916*/https://ui-patterns.com/patterns/FillInTheBlanks",
          "status": "pending",
          "checkedAt": "2026-09-22T11:55:04.410Z",
          "error": "status-request-failed",
          "jobId": "spn2-f131fc62c7ca8c7cf7934fb55bb00d0e98264a0a"
        }
      }
    ],
    "relations": [
      {
        "target": "inline-edit",
        "kind": "related",
        "condition": "The user changes a value in the place where the text sits",
        "reason": "Both put controls inside content, but inline editing changes what is already there while fill-in-the-blanks collects it through a sentence from the start.",
        "basis": "editorial"
      },
      {
        "target": "inline-validation",
        "kind": "composes_with",
        "condition": "A blank receives a value that is not valid",
        "reason": "There is no separate label to hang an error on, so the message must sit next to the blank itself and state the expected form.",
        "basis": "editorial"
      },
      {
        "target": "cognitive-load",
        "kind": "composes_with",
        "condition": "The number of blanks in the sentence grows",
        "reason": "Each extra blank is one more unfinished clause held in working memory, and past a handful the pattern stops paying off.",
        "basis": "editorial"
      }
    ],
    "rules": [
      {
        "when": "Controls are embedded in a sentence",
        "instruction": "Still give every control a name a screen reader can use; do not rely on visual context alone.",
        "strength": "must",
        "basis": "editorial"
      },
      {
        "when": "The interface has to be translated",
        "instruction": "Hand the whole sentence to translation as a template whose order can change, instead of fixing control positions to the source language’s word order.",
        "strength": "must",
        "basis": "editorial"
      }
    ],
    "behavior": {
      "states": [
        "empty",
        "partial",
        "complete",
        "invalid"
      ],
      "a11y": [
        "Each embedded control has an accessible name rather than relying on surrounding words",
        "The sentence keeps a readable order when text is enlarged or wraps"
      ],
      "motion": "No motion; the sentence updates directly as it is filled"
    },
    "demo": null,
    "version": "0.1.0",
    "editorialStatus": "drafted",
    "requirements": [],
    "demoCapabilities": [],
    "implementationNote": "This entry has no runnable specimen; the sentence and values in the illustration are fictional. Before shipping, confirm every embedded control has an accessible name and check the reading order after text is enlarged and wraps.",
    "image": {
      "src": "/images/fill-in-the-blanks.webp",
      "alt": "A fictional FIELDNOTES form sketch: one line alternating grey word runs with three underlined input blanks, two already holding short dark text and the third empty with a caret."
    },
    "searchTerms": [
      "表单",
      "输入",
      "句子",
      "上下文",
      "标签"
    ]
  }
}
