@formspree/ajax

中文文档
1.1.5发布于 2026/03/17MITTypeScriptESM + CJS构建来源已验证近 30 天下载 2145

格式化 AJAX 库

中文使用文档
文档目录13 节
  1. 安装
  2. 国家预防机制/亚兰
  3. 脚本标记 (CDN)
  4. 快速启动
  5. 无害环境管理(带捆绑机)
  6. HTML 语言
  7. 数据属性
  8. 配置
  9. 生命周期召回
  10. 默认行为
  11. 额外数据
  12. 样式
  13. 帮助和支持

格式化 AJAX

用于声明格式处理的香草 JavaScript 库 格式化不需要框架 – 通过数据属性或简单的JavaScript API与平面 HTML 形式合作.

安装

国家预防机制/亚兰

npm install @formspree/ajax

yarn add @formspree/ajax

脚本标记 (CDN)

没有捆绑。 关闭前添加此片段 </body> 标签 :

<script>
  window.formspree =
    window.formspree ||
    function () {
      (formspree.q = formspree.q || []).push(arguments);
    };
  formspree('initForm', { formElement: '#my-form', formId: 'YOUR_FORM_ID' });
</script>
<script src="https://unpkg.com/@formspree/ajax@1" defer></script>

快速启动

无害环境管理(带捆绑机)

import { initForm } from '@formspree/ajax';

initForm({
  formElement: '#contact-form',
  formId: 'YOUR_FORM_ID',
});

HTML 语言

<div data-fs-success></div>
<div data-fs-error></div>

<form id="contact-form">
  <label for="email">Email</label>
  <input type="email" id="email" name="email" data-fs-field />
  <span data-fs-error="email"></span>

  <button type="submit" data-fs-submit-btn>Send</button>
</form>

就是这样。 库自动处理提交,验证错误,加载状态,以及成功消息.

数据属性

这些 HTML 属性允许声明形式行为而无需额外的 JavaScript :

属性元素说明
data-fs-error="fieldName"<span>, (中文(简体) ), <div>显示字段级验证错误。 如果为空,则插入 API 错误消息 。 如果它有内容,则显示/隐藏为-is.
data-fs-error<div>显示窗体级别错误(没有值)。 相同的内容策略:空元素获得服务器消息,有内容的元素显示为-is.
data-fs-success<div>提交后显示成功消息。 空元素获得"谢谢!",带有内容的元素显示为-is.
data-fs-field<input>, (中文(简体) ), <textarea>标记要接收的输入 aria-invalid="true" 错误。 字段名称从元素读取 name 属性.
data-fs-submit-btn<button>提交期间自动停用,完成后重新启用.

配置

通过配置对象到 initForm()数字 :

import { initForm } from '@formspree/ajax';

const handle = initForm({
  // Required
  formElement: '#contact-form', // CSS selector or HTMLFormElement
  formId: 'YOUR_FORM_ID', // Your Formspree form ID

  // Optional
  origin: 'https://formspree.io', // API origin (default)
  debug: false, // Enable console logging

  // Extra data merged into every submission
  data: {
    source: 'website',
    campaign: () => getCampaign(),
    timestamp: async () => await getServerTime(),
  },

  // Lifecycle callbacks
  onInit: (context) => {},
  onSubmit: (context) => {},
  onSuccess: (context, result) => {},
  onError: (context, error) => {},
  onFailure: (context, error) => {},

  // Custom rendering (override defaults)
  enable: (context) => {},
  disable: (context) => {},
  renderFieldErrors: (context, error) => {},
  renderSuccess: (context, message) => {},
  renderFormError: (context, message) => {},
});

// Clean up when done
handle.destroy();

生命周期召回

回电参数说明
onInit(context)表格初始化时调用 .
onSubmit(context)在提交来文之前已打电话.
onSuccess(context, result)请求成功提交.
onError(context, error)从Formpree调用验证错误.
onFailure(context, error)调用出乎意料的错误(例如网络故障).

这个 context 对象包含: form (HTML形式), formKey, (中文(简体) ), endpoint, (中文(简体) ), client,以及 config。 。 。 .

默认行为

库提供了框外的合理默认:

  • 提交按钮 ——提交期间残废,竣工后再启用.
  • 字段错误 - 输入 data-fs-error="fieldName" 要素。 如果元素为空,则插入 API 错误消息 。 如果它有内容,则显示/隐藏为-is.
  • 外地验证 —— 说 aria-invalid="true" 设置在 data-fs-field 当其字段有错误时输入.
  • 成功的消息 - 电话 data-fs-success 元素显示为“谢谢!”(或保留用户内容).
  • 格式错误 - 电话 data-fs-error 元素(没有值)与窗体级错误消息(或保存的用户内容)一起显示.
  • 没有数据的成功 - fs - 成功 - 如果没有 data-fs-success 元素存在且无 onSuccess 提供回调,表格被替换为“谢谢!”消息.
  • 数据- fs- 成功 ——如果 data-fs-success 元素存在且无 onSuccess 提供回调,在成功后重设窗体.
  • 默认样式 ——错误消息的基本样式,无效字段,消息横幅自动被注入.

额外数据

使用 data 选项。 值可以是静态字符串,同步函数,也可以是同步函数. undefined 数值被跳过.

initForm({
  formElement: '#my-form',
  formId: 'YOUR_FORM_ID',
  data: {
    source: 'landing-page',
    referrer: () => document.referrer || undefined,
    sessionId: async () => await fetchSessionId(),
  },
});

样式

默认样式自动被注入. 您可以使用您的 CSS 来覆盖 :

/* Error message text */
[data-fs-error] {
  color: #dc3545;
  font-size: 12px;
}

/* Invalid field border */
[data-fs-field][aria-invalid='true'] {
  border-color: #dc3545;
}

/* Success message banner */
[data-fs-success][data-fs-active] {
  background: #d4edda;
  color: #155724;
}

/* Form-level error banner */
[data-fs-error=''][data-fs-active] {
  background: #f8d7da;
  color: #721c24;
}

帮助和支持

请参看 表格文档。 。 。 .

版本与发布记录

@formspree/ajax 共发布 3 个版本,首次发布于 2026/02/25;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.1.5latest2026/03/178 个月前
1.1.02026/02/258 个月前
1.0.02026/02/258 个月前

关于 @formspree/ajax 的常见问题

@formspree/ajax 是什么?

格式化 AJAX 库

如何安装 @formspree/ajax?

在项目目录运行 npm install @formspree/ajax,或使用 pnpm add / yarn add / bun add。

@formspree/ajax 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@formspree/ajax 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@formspree/ajax 可以商用吗?

@formspree/ajax 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@formspree/ajax 的下载量有多少?

根据 npm 官方下载统计,@formspree/ajax 在 2026/10/16 – 2026/11/14 这 30 天内被下载 2,145 次,日均约 72 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@formspree/ajax 还在维护吗?

最新版本 1.1.5 发布于 2026/03/17(8 个月前);至今共发布 3 个版本,其中过去 12 个月发布了 3 个;首次发布于 2026/02/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。