使用 JQUERY 更改输入名称

发布于 2024-11-30 12:33:39 字数 995 浏览 2 评论 0原文

我试图根据

  • 的列表索引更改所有输入名称,但看起来它根本没有改变。
  • $('.test').click(function() {
    for(var i=0;i<$("li.songs").length;i++)
    {
      var ob = $("li.songs").eq(i).clone();
      ob.find('input').each(function()
      {
        this.name = this.name+i;
        alert(this.name); //just checking if does it change
      });      
    }
    });
    

    现在,警报显示了我想要的正确名称,但是当我检查元素并尝试提交表单并显示所有 POST 值时,名称没有变化。

    更改前的预期输出示例:

    <li class="songs"><input type="text" name="song" /></li>
    <li class="songs"><input type="text" name="song" /></li>
    <li class="songs"><input type="text" name="song" /></li>
    

    更改后:

    <li class="songs"><input type="text" name="song1" /></li>
    <li class="songs"><input type="text" name="song2" /></li>
    <li class="songs"><input type="text" name="song3" /></li>
    

    注意:我不希望名为 Song 的输入是一个 ARRAY。

    I'm trying to change all the input name based on the list index of <li> but it seems like it's not changing at all.

    $('.test').click(function() {
    for(var i=0;i<$("li.songs").length;i++)
    {
      var ob = $("li.songs").eq(i).clone();
      ob.find('input').each(function()
      {
        this.name = this.name+i;
        alert(this.name); //just checking if does it change
      });      
    }
    });
    

    Now, the alert displays the right name I want, BUT no changes on the name when I inspect the element AND try to submit the form and display all the POST values.

    Example expected output before changing:

    <li class="songs"><input type="text" name="song" /></li>
    <li class="songs"><input type="text" name="song" /></li>
    <li class="songs"><input type="text" name="song" /></li>
    

    After changing:

    <li class="songs"><input type="text" name="song1" /></li>
    <li class="songs"><input type="text" name="song2" /></li>
    <li class="songs"><input type="text" name="song3" /></li>
    

    NOTE: I DO NOT WANT the input named song to be an ARRAY.

    如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

    评论(2

    旧城空念 2024-12-07 12:33:39

    您正在克隆该对象,因此更改是针对副本而不是原始 DOM 节点进行的。

    不要使用clone(),你会没事的。或者这样做:

    $("li.songs input").each(function(i) {
      $(this).attr('name', $(this).attr('name') + i);
    });
    

    You are cloning the object, so the change is done to a copy rather than the original DOM node.

    Don't use clone() and you'll be fine. Or do this:

    $("li.songs input").each(function(i) {
      $(this).attr('name', $(this).attr('name') + i);
    });
    
    萌辣 2024-12-07 12:33:39
    $("li.songs").each(function(i) {
      $(this).find('input').attr('name', 'song' + i);
    });
    
    $("li.songs").each(function(i) {
      $(this).find('input').attr('name', 'song' + i);
    });
    
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文