如何在jquery中替换name参数?

时间:2015-06-29 07:04:04

标签: jquery html

我有一个表,它有多行,我需要替换每个td中每个html元素的name属性。

我的HTML看起来像这样:

<div class="finalizedCollections">
<table>
    <tbody>
        <tr>
            <td>
                <input name="[0].CustomerID" value="1"></td>
            <td>first100
                <input name="[0].CustomerName" value="first100">
            </td>
            <td>
                <select name="[0].CollectionPayType">
                    <option value="1">1</option>
                    <option value="2">2</option>
                </select>
            </td>
            <td>data2</td>
        </tr>
        <tr>
            <td>
                <input name="[0].CustomerID" value="1"></td>
            <td>second100
                <input name="[0].CustomerName" value="second100">
            </td>
            <td>
                <select name="[0].CollectionPayType">
                    <option value="1">1</option>
                    <option value="2">2</option>
                </select>
            </td>
            <td>data2</td>
        </tr>
    </tbody>
</table>

现在我必须为[ ]中的每个输入元素替换tr中的值。

例如在第一行td中,输入名称属性应为[0].CustomerID,后续输入元素为[1].CustomerId

我遵循的步骤是:

对于每个tr,检查每个td中是否存在输入元素,如果存在,则替换[ ]中的name属性值,从0开始,后续tr替换为+1值< / p>

例如,在第一个tr中,所有td s中的所有输入值(如果存在)应该具有[0],而在下一个tr中它应该是[1],依此类推。

任何帮助?

提前致谢。

1 个答案:

答案 0 :(得分:2)

检查以下示例(检查元素以检查名称属性)

<强>说明

  • 遍历每一行并获取索引。
  • 对于每一行,检查是否有任何输入元素,如果为true,则循环显示
  • name属性拆分为.,获取第二部分并将其存储到变量('nm'
  • 将每个name属性替换为行索引,后跟'nm'变量

编辑(注)

如果您还想更改select元素,可以将公共类应用于要更改的所有元素,并在此行中选择此类:

var inp = $(this).find('.common_class');

代码

&#13;
&#13;
$('table tr').each(function(index) {
   var inp = $(this).find('input');
   if (inp.length > 0) {
      inp.each(function() {
         var that = $(this);
         var nm = that.attr('name').split('.')[1];
         that.attr('name', '[' + index + '].' + nm);
      });
   }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script><table>
    <tbody>
        <tr>
            <td>
                <input name="[0].CustomerID" value="1"></td>
            <td>first100
                <input name="[0].CustomerName" value="first100">
            </td>
            <td>
                <select name="[0].CollectionPayType">
                    <option value="1">1</option>
                    <option value="2">2</option>
                </select>
            </td>
            <td>data2</td>
        </tr>
        <tr>
            <td>
                <input name="[0].CustomerID" value="1"></td>
            <td>second100
                <input name="[0].CustomerName" value="second100">
            </td>
            <td>
                <select name="[0].CollectionPayType">
                    <option value="1">1</option>
                    <option value="2">2</option>
                </select>
            </td>
            <td>data2</td>
        </tr>
    </tbody>
</table>
&#13;
&#13;
&#13;

相关问题