【问题标题】:name attribute self references id名称 属性 自引用 id
【发布时间】:2017-10-05 09:14:47
【问题描述】:

简而言之,是否有一些自我参考代码可以将 name 属性设置为等于 id? 例如,

<input name="this.id" id="input1">

总之,使用.serialize() 需要使用name 属性。假设,有一个表单包含许多没有name 属性的输入。我知道,

然而,在一些关于 SO 的研究中,我被引导相信,如果一个人要使用,

<input name="id[]" id="input1">

当序列化时,name 将附加id。在我的测试中,此方法生成 id%5B%5D(id[] 的 url 编码字符串)。使用任何可用的方法,是否有一种简便的方法来设置 name 属性,以便它在每个输入上引用 id 属性?

【问题讨论】:

  • 那么为什么不在创建表单时设置名称或运行代码来设置输入的名称
  • 实际上,我可能会这样做。好奇心推动了这个查询。
  • 首先是如何创建所有这些输入的?似乎从生成它们的地方开始是有意义的
  • HTML 中没有设置名称来引用 id....
  • @charlietfl 是其他人创建的。你是对的。

标签: javascript jquery html


【解决方案1】:

HTML 中没有任何内容可以进行引用,因此您需要手动设置它。最好的解决方案,在构建表单时设置它。或者在引用元素时设置它

console.log($("input").attr("name", function (){ return this.name || this.id }).serialize())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="foo1" value="1" />
<input id="foo2" value="2" />
<input id="foo3" value="3" />
<input id="foo4" value="4" />

或者只写你自己的方法

$.fn.serializeId = function() {
  return $(this).map(function(){
    return this.id + "=" + encodeURIComponent($(this).val())
  }).get().join("&");
}


console.log($("input").serializeId())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="foo1" value="1" />
<input id="foo2" value="2" />
<input id="foo3" value="3" />
<input id="foo4" value="4" />

【讨论】:

  • 这是一个解决方案,可能是到达所需终点的最短路径。但是,我对其他方法来做我所要求的事情更加好奇。
  • 你想做的事是不可能的。这两种解决方案是您设置它或编写您自己的序列化。
  • 不可能
猜你喜欢
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-10
相关资源
最近更新 更多