Se encontraron 2 elementos con ID no único # billing-new-address-form Magento 2

8

Cuando estoy en la página de pago, recibo el siguiente error de consola cuando selecciono el método de envío y voy al siguiente paso 'pago'.

[DOM] Se encontraron 2 elementos con un ID no único # billing-new-address-form:

[DOM] Se encontraron 2 elementos con una identificación no única # billing-save-in-address-book: `

¿Cómo puedo resolver este problema?

Shekhar Suman
fuente
¿Es esta una tienda Magento 2 predeterminada / limpia? ¿Cual version? Parece un error en Magento 2. ¿Hay un problema de Gitub vinculado a esto? Comenzando con Chrome 63, ahora arroja errores relacionados con DOM.
Erfan
Tengo el mismo problema en la edición 2.1.9 de la comunidad de Magento
Supersónico el
cualquier solución para ello
Ahmad Vaqas Khan
github.com/magento/magento2/issues/13415 - plantillas de ./magento/module-checkout/view/frontend/web/template/billing-address/*.html se utilizan para todos los métodos de pago donde la dirección de facturación no puede ser igual al envío, cuando aparecen 2 elementos DOM con la misma ID en la página, se genera el error. Necesitamos agregar el código del método de pago a estos ID, pero estas son plantillas frontend. Solo el código JS puede hacerlo, pero no sé cómo.
Alex Gusev
Tuve el mismo problema en 2.1.8, pero con #agreements. He sobrescrito el módulo principal de los acuerdos de Magento con Magento_CheckoutAgreements en mi plantilla personalizada usando los archivos de Mage 2.2 github.com/magento/magento2/tree/2.2/app/code/Magento/… Archivos necesarios: web / template / checkout / checkout- assets.html web / js / model / Agreement-validator.js web / js / view / checkout-codes.js
Gediminas

Respuestas:

1

Este problema se corrigió en la rama de desarrollo 2.3, también se exportó a 2.2 y se lanzará en 2.2.6, puedo ver que también se respalda a 2.1.

Hay 2 lugares que deben cambiarse para solucionar el problema

vendor / magento / module-gift-message / view / frontend / web / template / gift-message-form.html

<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<!-- ko if: isActive() -->
<div class="gift-message">
    <div class="gift-options-title">
        <span data-bind="i18n: 'Gift Message (optional)'"></span>
    </div>
    <div class="gift-options-content">
        <fieldset class="fieldset">
            <div class="field field-to">
                <label data-bind="attr: {for: 'gift-message-whole-to-' + index }" class="label">
                    <span data-bind="i18n: 'To:'"></span>
                </label>
                <div class="control">
                    <input type="text"
                           class="input-text"
                           data-bind="value: getObservable('recipient'), attr: { id: 'gift-message-whole-to-' + index }">
                </div>
            </div>

            <div class="field field-from">
                <label data-bind="attr: {for: 'gift-message-whole-from-' + index }" class="label">
                    <span data-bind="i18n: 'From:'"></span>
                </label>
                <div class="control">
                    <input type="text"
                           class="input-text"
                           data-bind="value: getObservable('sender'), attr: { id: 'gift-message-whole-from-' + index }">
                </div>
            </div>
            <div class="field text">
                <label for="gift-message-whole-message" class="label">
                    <span data-bind="i18n: 'Message:'"></span>
                </label>
                <div class="control">
                    <textarea id="gift-message-whole-message"
                              class="input-text"
                              rows="5" cols="10"
                              data-bind="value: getObservable('message')"></textarea>
                </div>
            </div>
        </fieldset>

    </div>
</div>
<!-- /ko -->
<div class="actions-toolbar">
    <div class="secondary">
        <button type="submit" class="action secondary action-update" data-bind="
                    attr: {title: $t('Update')},
                    click: $data.submitOptions.bind($data)">
            <span data-bind="i18n: 'Update'"></span>
        </button>
        <button class="action action-cancel" data-bind="
                    attr: {title: $t('Cancel')},
                    click: $data.hideFormBlock.bind($data)">
            <span data-bind="i18n: 'Cancel'"></span>
        </button>
    </div>
</div>

vendor / magento / module-checkout / view / frontend / web / template / billing-address / form.html

<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<div class="billing-address-form" data-bind="fadeVisible: isAddressFormVisible">
    <!-- ko foreach: getRegion('before-fields') -->
    <!-- ko template: getTemplate() --><!-- /ko -->
    <!--/ko-->
    <form data-bind="attr: {'data-hasrequired': $t('* Required Fields')}">
        <fieldset
            data-bind="attr: { id:'billing-new-address-form-'+index, value:index}"
            class="billing-new-address-form fieldset address">
            <!-- ko foreach: getRegion('additional-fieldsets') -->
            <!-- ko template: getTemplate() --><!-- /ko -->
            <!--/ko-->
            <!-- ko if: (isCustomerLoggedIn && customerHasAddresses) -->
            <div class="choice field">
                <input type="checkbox" class="checkbox"  data-bind="checked: saveInAddressBook, attr: {id: 'billing-save-in-address-book-' + getCode($parent)}" />
                <label class="label" data-bind="attr: {for: 'billing-save-in-address-book-' + getCode($parent)}" >
                    <span data-bind="i18n: 'Save in address book'"></span>
                </label>
            </div>
            <!-- /ko -->
        </fieldset>
    </form>
</div>

Salud

Toan Nguyen
fuente
-1

si desea emitir resuelto que siga este paso

  1. primero encontrado donde ese html en el archivo .phtml
  2. Ahora analice cualquiera que obtenga datos con bucles como (for, foreach)
  3. si los datos se obtienen con un bucle que ese id con agregar algunos datos únicos

solo asi

<?php
foreach ($variable as $key => $value) {
 ?>
      <div id="billing-new-address-form<?php echo "-"."daynamic some unique id"; ?>"></div>
 <?php
}
?>

y uniq id genarated

Rasik Miyani
fuente
no funciona.
Shekhar Suman