Magento2 - добавьте небольшой jquery, который работал до обновления - PullRequest
0 голосов
/ 24 декабря 2018

Код, который я использую, выглядит следующим образом:

jQuery(document).ready(function($){
    if(window.location.href =='https://mysite/csproduct/vproducts/new/set/4/type/simple/'){
    console.log('ready');
    $("[name='product[vendor_price]']").keyup(function() {
    $("[name='product[price]']").val($(this).val()).change();
    });
    }
});

Если я вставлю код в консоль, он будет работать.даже без вставки кода я получаю console.log - готово.кроме этого в консоли нет ошибки.

HTML, который здесь используется, выглядит следующим образом:

<div class="admin__field _required" data-bind="css: $data.additionalClasses, attr: {'data-index': index}, visible: visible" data-index="vendor_price">       
<label class="admin__field-label" data-bind="attr: {for: uid}, visible: $data.labelVisible" for="CTK9J41">

<span data-bind="attr: {'data-config-scope': $data.scopeLabel}, text: label" data-config-scope="[STORE VIEW]">Vendor Price</span>
</label>   

<div class="admin__field-control" data-bind="css: {'_with-tooltip': $data.tooltip, '_with-reset': $data.showFallbackReset &amp;&amp; $data.isDifferedFromDefault}">
<input class="admin__control-text" type="text" data-bind="
        event: {change: userChanges},
        value: value,
        hasFocus: focused,
        valueUpdate: valueUpdate,
        attr: {
            name: inputName,
            placeholder: placeholder,
            'aria-describedby': noticeId,
            id: uid,
            disabled: disabled
    }" name="product[vendor_price]" aria-describedby="notice-CTK9J41" id="CTK9J41">
    </div>
</div>


<div class="admin__field admin__field-small _required" data-bind="css: $data.additionalClasses, attr: {'data-index': index}, visible: visible" data-index="price">

<span data-bind="attr: {'data-config-scope': $data.scopeLabel}, text: label" data-config-scope="[STORE VIEW]">Price</span>
    </label>

<div class="admin__field-control" data-bind="css: {'_with-tooltip': $data.tooltip, '_with-reset': $data.showFallbackReset &amp;&amp; $data.isDifferedFromDefault}">

<div class="admin__control-addon">                

<input class="admin__control-text" type="text" data-bind="
        event: {change: userChanges},
        value: value,
        hasFocus: focused,
        valueUpdate: valueUpdate,
        attr: {
            name: inputName,
            placeholder: placeholder,
            'aria-describedby': noticeId,
            id: uid,
            disabled: disabled
    }" name="product[price]" aria-describedby="notice-JHLHU2O" id="JHLHU2O">   

<label class="admin__addon-prefix" data-bind="attr: {for: uid}" for="JHLHU2O">

<span data-bind="text: addbefore">₹</span>
</label>
    </div>
</div>

1 Ответ

0 голосов
/ 24 декабря 2018

Magento 2 использует инфраструктуру Knockout.js для динамического создания некоторых частей своего интерфейса.Это здание будет происходить и после того, как сработает событие jQuery ready.Поэтому может случиться так, что элемент с name='product[vendor_price]' еще не доступен в DOM, когда вы его ищете.

Один из способов заставить ваш слушатель событий работать - это использовать делегирование событий с on:

$(document).on("keyup", "[name='product[vendor_price]']", function() {
    $("[name='product[price]']").val($(this).val()).change();
});

Примечание: не имеет отношения к вашему вопросу, но попробуйте использовать событие «input» вместо «keyup»: оно также будет реагировать на изменения, сделанные с помощью перетаскивания.n-drop, через контекстное меню (очистить, вырезать, вставить), через другие устройства ввода или когда клавиша удерживается нажатой и повторяется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...