在 HTMX 中按名称引用输入值

Posted

技术标签:

【中文标题】在 HTMX 中按名称引用输入值【英文标题】:Referencing input value by name in HTMX 【发布时间】:2022-01-18 16:54:27 【问题描述】:

我最近开始研究使用 HTMX,但遇到了一个我无法弄清楚的问题。本质上,我有一个 select 元素,每当用户进行选择时,我都会使用它来制作 http POST。然而,为了发布该帖子,我需要提供一个令牌,该令牌存储在关于 selectinput 中。有没有办法让我在 HTMX 语法中使用名称“csrfmiddlewaretoken”引用上面的输入?

【问题讨论】:

您是否尝试将[name='csrf_token] 更改为[name='csrfmiddlewaretoken']。那应该行得通。此外,如果您将hx-post 移动到表单元素或包装选择和令牌输入的元素,则请求有效负载应包含两者。 是的,工作,需要更好地了解文档。我在表单中遇到的问题是我需要在 POST 方法中包含另一个值,并且在提交时使用 hx-vals 似乎不适用于表单 我很惊讶 hx-vals 没有工作。如果您在 hx-vals 中包含代码示例,我们可能会提供帮助。您还可以在代码示例中使用文本而不是图像吗?那张图片中的文字太小了。 我发现我误解了图书馆,需要更多阅读。我会发布我的问题的答案 【参考方案1】:

所以我弄清楚了我的问题所在。为了让我扩展 hx-post 请求的负载,我需要做的是在 hx-post 中包含我想要的内容的 html 元素要求。为此,您可以在发出请求的元素上使用 hx-include 属性,该属性按名称引用其他元素并将其在负载中的值作为 name: value 对。

<select name="sample_select" hx-post="link" hx-include="[name='csrfmiddlewaretoken']" hx-trigger="changed">... 

上面的示例 select 将在 select 元素的值发生更改时发出 HTTP Post 请求。请求有效负载将是


 sample_select: selected_value;
 csrfmiddlewaretoken: value

请记住,如果您在同一页面上有多个具有相同名称的元素,当您在 hx-include 属性中引用该名称时,HTMX 库将从所有元素中获取所有值有效载荷中的元素。我还没有找到引用特定元素的方法,或者最接近的方法,但如果你知道一种方法,请分享。

【讨论】:

以上是关于在 HTMX 中按名称引用输入值的主要内容,如果未能解决你的问题,请参考以下文章

在 HTMX 中按类别从项目列表中获取 ID

按名称选择器,在我的类名 jQuery 的框中

如何在jQuery中引用表单中的输入

shinyR - 通过文本动态引用输入字段值

如何使用 htmx 在 django 中进行不区分大小写的主动搜索

在 XmlNode 数组中按名称查找值