【问题标题】:Compound object in HTML <button> value attributeHTML <button> 值属性中的复合对象
【发布时间】:2010-11-04 13:51:34
【问题描述】:

如果由于某种原因必须将

CSV: 
  <button value="Lancelot,Grail,blue">Answer</button>
JSON: 
  <button value="{'name':'Lancelot','quest':'Grail','color':'blue'}">Answer</button>

在没有好的方法的情况下,有没有传统的方法?

编辑:另一个用例

服务器 M,HTML 的生产者,知道用户的当前位置和最喜欢的类型、电影名称、最近的剧院和下一次放映时间。服务器 F 知道如何查询各种 3rd 方服务器,以了解如何从 A 点到达 B 点以便在时间 T 之前到达。用户只知道电影名称:单击 Drag Me to Hell,然后获取路线。服务器 M 可以为每部电影生成一个表单,一个按钮显示电影的名称,多个隐藏字段包含开始和结束位置以及所需的到达时间,但这需要很多时间的重复代码。这些一键式迷你表单中的每一个都将具有相同的方法和操作以及相同的隐藏输入字段结构。样式将是迷你表单的集合而不是按钮的集合,因此 FIELDSET 和 LEGEND 不可用(因为 HTML 禁止嵌套表单)。将参数放入按钮的 value 属性中会更整洁。

【问题讨论】:

  • 我很抱歉,但我无法理解这样做的原因。您可以使用单选按钮进行选择并有一个按钮来接受该选择。
  • 我猜只要选择任何你知道不会在值内自然出现的分隔符。
  • @shahkalpesh,考虑以下情况: (1) html 生产者有一个将键与复合对象相关联的映射; (2)按钮点击消费者既没有地图也没有钥匙,但能够解释复合对象; (3) 按钮被呈现给的用户知道键,但不一定知道复合对象的值。有没有办法将复合对象与单选按钮相关联?

标签: html json


【解决方案1】:

如果你必须有一个按钮元素,为什么不使用 JavaScript 来设置一个虚假的属性:

$('mybutton').compoundValue = { ... json ... };

然后在表单提交期间读取“compoundValue”等。

虽然您确实可能需要考虑一组复选框或其他一些表单位来完成您要完成的工作。

【讨论】:

  • 唉,如果客户端禁用了 JavaScript,降级是相当不优雅的。不过,建议 +1。
  • 为了完全优雅地降级,您必须使用单独的表单元素或强制服务器端解析逗号分隔的值。此外,现在人们禁用 JavaScript 的情况非常少见,当然也不是没有听说过 webapps 需要它。
  • @Eric Wendelin,数数你的祝福。我的一个客户的最终用户中有很大一部分正在使用 AOL 浏览器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多