esistema1 Опубликовано 6 декабря, 2018 Жалоба Поделиться Опубликовано 6 декабря, 2018 (изменено) Всем здравствуйте! Есть простейшая форма которая размещена на странице с заказами в админке, она передает значение {$order->track|escape} (почтовый трек номер) в файл обработчик. <form id="data{$order->id}"> <input name="barcode" value="{$order->track|escape}" class="ot12" id="form-auto1"> </form> <button name="button" type="button" form="data{$order->id}" onclick="getdetails()">Отправить</button> Далее обработчик получает данные через api и возвращает их сюда <div id="msg"></div> За передачу в обработчик отвечает скрипт {literal} <script> function getdetails(){ b1 = document.getElementsByName('order->id'); var barcode = $('#form-auto1').val(); $.ajax({ type: "POST", url: "/test/postal.php", data: {fname:barcode} }).done(function( result ) { $("#msg").html( result ); }); } </script> {/literal} Но, так как на странице не один заказ, а несколько, то код срабатывает только для первого заказа. По идее надо изменить id в input, например на id="form-auto1{$order->id}" но как это прописать в скрипте не могу понять, конструкция var barcode = $('#form-auto1{$order->id}').val(); не срабатывает. Подскажите пожалуйста как подставить переменную в скрипт? Изменено 6 декабря, 2018 пользователем esistema1 Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 6 декабря, 2018 Жалоба Поделиться Опубликовано 6 декабря, 2018 Функция function getdetails(){...} Не имеет параметров, и в принципе не может знать, к какому заказу относится действие. Сначала надо добиться того, чтобы она это знала. Например, передавать туда параметрfunction getdetails(order_id){...}тогда внутри уже будет с чем работать:var barcode = $('#form-auto1'+order_id).val(); Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 6 декабря, 2018 Автор Жалоба Поделиться Опубликовано 6 декабря, 2018 (изменено) Функция function getdetails(){...} Не имеет параметров, и в принципе не может знать, к какому заказу относится действие. Сначала надо добиться того, чтобы она это знала. Например, передавать туда параметрfunction getdetails(order_id){...}тогда внутри уже будет с чем работать:var barcode = $('#form-auto1'+order_id).val(); Подставил данные как Вы написали <script> function getdetails(order_id){ var barcode = $('#form-auto1'+order_id).val(); $.ajax({ type: "POST", url: "/test/postal.php", data: {fname:barcode} }).done(function( result ) { $("#msg").html( result ); }); } </script> Но теперь в обработчик не передается barcode ({$order->track|escape}). В input прописал id="form-auto1{$order->id}". Изменено 6 декабря, 2018 пользователем esistema1 Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 6 декабря, 2018 Автор Жалоба Поделиться Опубликовано 6 декабря, 2018 Все разобрался - надо было изменить onclick.Огромное спасибо за помощь! Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 6 декабря, 2018 Автор Жалоба Поделиться Опубликовано 6 декабря, 2018 Помогите еще пожалуйста..Теперь у каждого заказа есть input с трек номером <input placeholder="Трек номер" name="track[{$order->id}]" value="{$order->track|escape}"></input> и input с местонахождением трека <input id="status_pochta{$order->id}" placeholder="статус" name="status_pochta[{$order->id}]" value="{$order->status_pochta|escape}"></input> Статус трека подгружается при клике на <button name="button" type="button" onclick="getdetails({$order->id})">Проверить</button> На странице несколько заказов, нажимать у каждого кнопку проверить не совсем удобно. Как сделать одну общую кнопку на это действие? Т.е. чтобы при клике на одну кнопку обработались и заполнились статусы у всех заказов на странице? Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 6 декабря, 2018 Жалоба Поделиться Опубликовано 6 декабря, 2018 (изменено) Примерно так: К тегам button добавить атрибутыdata-order_id="{$order->id}" class="button_track" Затем в новом обработчике новой кнопки $('.button_track').each (function (index, element){ order_id = $(element).data('order_id') getdetails(order_id) }) Изменено 6 декабря, 2018 пользователем phukortsin Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 6 декабря, 2018 Автор Жалоба Поделиться Опубликовано 6 декабря, 2018 Круто! Спасибо!!! Цитата Ссылка на сообщение Поделиться на другие сайты
fuckmoney Опубликовано 6 декабря, 2018 Жалоба Поделиться Опубликовано 6 декабря, 2018 Круто! Спасибо!!! Вы случаем не шаманите с API Почта России? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.