Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Всем здравствуйте!

 

Есть простейшая форма которая размещена на странице с заказами в админке, она передает значение {$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(); 

не срабатывает.

 

Подскажите пожалуйста как подставить переменную в скрипт?

Изменено пользователем esistema1
Ссылка на сообщение
Поделиться на другие сайты

Функция

 

function getdetails(){
...
}

 

Не имеет параметров, и в принципе не может знать, к какому заказу относится действие. Сначала надо добиться того, чтобы она это знала.

 

Например, передавать туда параметр

function getdetails(order_id){
...
}

тогда внутри уже будет с чем работать:

var barcode = $('#form-auto1'+order_id).val();

Ссылка на сообщение
Поделиться на другие сайты

Функция

 

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}".

Изменено пользователем esistema1
Ссылка на сообщение
Поделиться на другие сайты

Помогите еще пожалуйста..

Теперь у каждого заказа есть 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>

 

 

На странице несколько заказов, нажимать у каждого кнопку проверить не совсем удобно. Как сделать одну общую кнопку на это действие? Т.е. чтобы при клике на одну кнопку обработались и заполнились статусы у всех заказов на странице?

Ссылка на сообщение
Поделиться на другие сайты

Примерно так:

 

К тегам button добавить атрибуты

data-order_id="{$order->id}" class="button_track"

 

Затем в новом обработчике новой кнопки

 

        $('.button_track').each (function (index, element){
            order_id = $(element).data('order_id')
            getdetails(order_id)
        })
 

Изменено пользователем phukortsin
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...