Snipcart: отключить автозаполнение в адресных полях

можно ли отключить автозаполнение в адресных полях? Я вижу есть

<template v-if="useAutocomplete">

в шаблоне. Но где я могу установить значение false?


person Albrecht    schedule 28.10.2020    source источник


Ответы (2)


Меня это тоже интересует. Я уверен, что намерение состоит в том, чтобы позволить разработчикам отключить функцию автозаполнения, но мне не удалось заставить это работать. В качестве обходного пути вы можете переопределить шаблон, переопределив компонент адресных полей:

    <div hidden id="snipcart" data-api-key="API_KEY">
        <address-fields>
            <div class="root">
                <div class="snipcart-form__row">
                    <div class="snipcart-form__field snipcart-form__cell--large">
                        <snipcart-label class="snipcart__font--tiny" for="address1">
                            {{ $localize('address_form.address1') }}
                        </snipcart-label>
                        <snipcart-input name="address1"></snipcart-input>
                        <snipcart-error-message name="address1"></snipcart-error-message>
                    </div>

                    <div class="snipcart-form__field snipcart-form__cell--tidy">
                        <snipcart-label class="snipcart__font--tiny" for="address2">
                            {{ $localize('address_form.address2') }}
                        </snipcart-label>
                        <snipcart-input name="address2"></snipcart-input>
                        <snipcart-error-message name="address2"></snipcart-error-message>
                    </div>
                </div>

                <div class="snipcart-form__field">
                    <snipcart-label class="snipcart__font--tiny" for="city">{{ $localize('address_form.city') }}
                    </snipcart-label>
                    <snipcart-input name="city"></snipcart-input>
                    <snipcart-error-message name="city"></snipcart-error-message>
                </div>

                <div class="snipcart-form__field">
                    <snipcart-label class="snipcart__font--tiny" for="country">{{ $localize('address_form.country') }}
                    </snipcart-label>
                    <snipcart-typeahead type="dropdown" name="country" autocomplete="country"></snipcart-typeahead>
                </div>

                <div class="snipcart-form__row">
                    <div class="snipcart-form__field snipcart-form__cell--large">
                        <snipcart-label class="snipcart__font--tiny" for="province">
                            {{ $localize('address_form.province') }}
                        </snipcart-label>
                        <snipcart-typeahead type="dropdown" name="province" autocomplete="province state">
                        </snipcart-typeahead>
                    </div>

                    <div class="snipcart-form__field snipcart-form__cell--tidy">
                        <snipcart-label class="snipcart__font--tiny" for="postalCode">
                            {{ $localize('address_form.postalCode') }}
                        </snipcart-label>
                        <snipcart-input name="postalCode"></snipcart-input>
                        <snipcart-error-message name="postalCode"></snipcart-error-message>
                    </div>
                </div>
            </div>
        </address-fields>
    </div>

См .: https://docs.snipcart.com/v3/setup/customization

Я надеюсь, что кто-то подскажет лучший ответ.

person Iljya Kalai    schedule 09.11.2020
comment
Я получил ответ от представителя snipcard. Вышеупомянутый способ сделать это (хотя они работают над лучшим). - person Iljya Kalai; 10.11.2020
comment
Привет, @Iljya Kalai! Могу я узнать, как вы пытались установить свойство useAutocomplete как false? Я знаю, что вы сказали, что это не сработало, но я также хотел бы попробовать это на своей установке. Спасибо! - person Talha; 25.11.2020
comment
Что бы это ни стоило, я вижу, что это флаг функции в Snipcart.store.getState().session.featureFlags, но не уверен, где его даже установить. - person Talha; 25.11.2020
comment
извините, я больше не могу вспомнить ... в любом случае, ребята из Snipcart сказали мне, что путь, который я показываю выше, - это то, что нужно сейчас, удивительно, что я знаю - person Iljya Kalai; 26.11.2020
comment
Не беспокойтесь, спасибо! Да, это удивительно, ха-ха. В документации по JS API также есть некоторые пробелы по этому поводу, поэтому я надеюсь, что это то, что скоро появится. По крайней мере, для продвижения вперед это решение хорошее. - person Talha; 26.11.2020
comment
По крайней мере, мне кажется, что для работы этой настройки требуется часть провинции. Если вы не укажете его, потому что это неактуально или неприменимо в некоторых странах, кнопка «Продолжить платеж» не будет работать. В консоли даже нет ошибки, которая могла бы объяснить ее неработоспособность. Для меня не имеет никакого смысла принудительное использование поля провинции, так что я думаю, может я ошибаюсь? Кто-нибудь еще с такой же проблемой? - person WebShaped.Biz; 26.02.2021
comment
Это совершенно другой вопрос, WebShaped.Biz - person Iljya Kalai; 26.02.2021
comment
Ты прав, @IljyaKalai, я не думал, у меня плохо. - person WebShaped.Biz; 27.02.2021
comment
@ WebShaped.Biz Вы выяснили, в чем проблема с кнопкой «Продолжить платеж» с полем провинции? - person scar; 06.04.2021
comment
@scar Это поле является обязательным и не будет изменено, по словам специалистов службы поддержки. однако только сегодня я получил сообщение службы поддержки, в котором говорилось следующее: Привет! Один из способов, которым я мог убедиться в этом, - это программная установка поля "Провинция" с помощью нашего JavaScript API docs.snipcart.com/v3/sdk/api#update каждый раз при создании корзины docs.snipcart.com/v3/sdk/events#cartcreated и скрытие поля провинции с помощью CSS. Дайте мне знать, если это поможет, Ура! - person WebShaped.Biz; 07.04.2021
comment
@scar Update: Версия 3.1.0 была выпущена вчера (7 апреля), и в примечаниях к выпуску есть строка, говорящая, что провинция больше не требуется :-) Я ее тестировал, и она действительно больше не требуется. Ура! - person WebShaped.Biz; 08.04.2021
comment
@ WebShaped.Biz yaaay! Отличное время. благодарю вас! - person scar; 08.04.2021

Принятый по-прежнему кажется официально задокументированным способом сделать это (апрель 2021 г., с использованием Snipcart v3.0.31), но я также предпочел бы не перезаписывать шаблоны для функций, уже встроенных в кассу.

Ввод автозаполнения также дает вам флажок, в котором вы можете отказаться и вручную ввести свой адрес, что восстанавливает шаблоны адресов по умолчанию.

Флажок

Другой вариант - всегда устанавливать этот флажок для пользователя, прежде чем он сделает что-либо еще в корзине:

let disableAddressSearch = function () {
  let fauxEvent = new MouseEvent('click', {
      view: window,
      bubbles: true,
      cancelable: true
  })

  let input = document.querySelector('input[name=addressNotFound]')

  if (!input) {
    return null
  }

  let result = input.dispatchEvent(fauxEvent)

  if (!result) {
    // You probably don’t want this in production
    console.warn('Couldn’t disable autocomplete checkbox')
  }
}

Вы можете попробовать это в консоли на странице оформления заказа. Теперь мы хотим делать это каждый раз, когда покупатель подходит к кассе.

// https://docs.snipcart.com/v3/sdk/events#themeroutechanged
Snipcart.events.on('theme.routechanged', function (routesChange) {
    if (routesChange.to === '/checkout') {
        console.log('cart opened');

        // A timeout that should be long enough for the checkout
        // to be rendered
        window.setTimeout(disableAddressSearch, 100)
    }
})

Тайм-аут не совсем надежен, но мне он показался приемлемым компромиссом по сравнению с наблюдением за появлением элемента, например. используя MutationObserver.

person kennethormandy    schedule 02.04.2021