如何获得课堂上的所有领域

时间:2019-11-10 19:28:38

标签: javascript jquery formset

我有多个类,其中有不同数量的字段,其中一个类示例:

<div class="row form-row-extra-phone spacer">
        <div class="col-12">
            <div class="input-group">
                <input type="tel" name="extraPhone-0-phone_number" class="form-control" placeholder="Extra Phone Number" maxlength="128" id="id_extraPhone-0-phone_number">
                <div class="input-group-append">
                     <a class="btn btn-success btn-circle btn-sm add-form-row" href="#" role="button" id="plus_payment_data">+</a>
                </div>
            </div>
        </div>
</div>

我要遍历类中具有属性“ name”和“ id”的所有字段,并在其中的数字上加1(在示例name="extraPhone-0-phone_number"-> name="extraPhone-1-phone_number"中)

我可以通过以下方式选择课程: $('.form-row-extra-phone')

如何对包含属性“名称”和“标识”的所有文件 进行迭代?

2 个答案:

答案 0 :(得分:2)

我假设您在谈论<div class="row form-row-extra-phone spacer">时是说class吗?这是element,而不是课程。

类可能是一个有问题的术语,因为它可以引用完全无关的CSS / DOM类 Javascript类。

因此,如果您有<div class="something">,则something是CSS / DOM类,但整个问题不是 该类,而是element

现在fields所指的也只是element

因此,您要选择具有类form-row-extra-phone的所有元素,并选择具有name属性的所有后代元素。那很容易。基本上在CSS选择器中,(空格)是后代元素的选择器。

因此您可以选择.form-row-extra-phone [name]

所以您可能想要的是这样的东西:

document.querySelectorAll('.form-row-extra-phone [name]')
  .forEach(elem => elem.name.replace(/[0-9]/, x => Number(x) + 1));

答案 1 :(得分:0)

当您使用^=时,它以开头,而$=时的是结尾。

如果条件为(名称和ID)

    $('.form-row-extra-phone input[name^="extraPhone"][id^="id_extraPhone"]')

如果条件为(名称或ID)

    $('.form-row-extra-phone input[name^="extraPhone"],input[id^="id_extraPhone"]')

为此https://api.jquery.com/multiple-attribute-selector/或Google选中“ jQuery多个属性选择器”