crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Web/JavaScript: Как прочитать в переменную поле ввода (input)
Litkevich Yuriy
  опции профиля:
сообщение 28.6.2013, 20:51
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Продолжаю навёртывать на свой интернет-магазин яндекс метрику. Застопорился на учёте товаров положенных в корзину.
На странице товара есть поле, в которое пользователь вводит кол-во, дальше нажимает кнопку "В корзину" на эту кнопку повешан, кроме штатаного, дополнительный обработчик Метрики.
Код выглядит так:
Раскрывающийся текст

      <div class="cart">
        <script type="text/javascript">
            var yaGoalParams = {
                product_id: "<?php echo $product_id; ?>",
                name: "<?php echo $model; ?>",
                price: <?php echo $price_num; ?>,
                quantity: 1
            };
        </script>
        <div><?php echo $text_qty; ?>
          <input type="text" name="quantity" size="2" value="<?php echo $minimum; ?>" />
          <input type="hidden" name="product_id" size="2" value="<?php echo $product_id; ?>" />
           <input type="button" onclick="yaCounter16843852.reachGoal('to_cart_product', yaGoalParams); return true;" value="<?php echo $button_cart; ?>" id="button-cart" class="button" />
          </div>
        <div><span>   <?php echo $text_or; ?>   </span></div>
        <div><a onclick="addToWishList('<?php echo $product_id; ?>');"><?php echo $button_wishlist; ?></a><br />
          <a onclick="addToCompare('<?php echo $product_id; ?>');"><?php echo $button_compare; ?></a></div>
        <?php if ($minimum > 1) { ?>
        <div class="minimum"><?php echo $text_minimum; ?></div>
        <?php } ?>
      </div>

тут есть один неприятный момент переменная yaGoalParams объявлена заранее (я так понял она должна быть раньше вызова метода reachGoal, либо она должна передаваться непосредственно в метод reachGoal).
Как бы мне воткнуть вместо
quantity: 1
значение из поля
<input type="text" name="quantity" ...
которое ввёл пользователь
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 1.7.2013, 11:20
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Тебе явно нужно использовать Ajax, в котором повесить на поле событие ввода, а во время ввода уже менять твою переменную примерно так: yaGoalParams.quantity = valueFromInput;
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.7.2013, 14:12
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Эдик, а можешь привести пример как его навешивать?
Ajax в движке интернет-магазина активно используется, только я пока не понимаю, куда можно лезть, а куда нет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 1.7.2013, 21:20
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Посмотри: http://api.jquery.com/val/

И переменную value из данного примера присваивай:
yaGoalParams.quantity = value;
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.7.2013, 21:51
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


В общем переделал код, на странице присутствовал штатный обработчик добавления в корзину, перенёс всё добро по учёту в него. Получилось так так:
Раскрывающийся текст

<script type="text/javascript"><!--
$('#button-cart').bind('click', function() {
    $.ajax({
    ... // тут штатный обработчик добавления в корзину
    });
    
    var yaGoalParams = {
        product_id: "<?php echo $product_id; ?>",
        name: "<?php echo $model; ?>",
        price: <?php echo $price_num; ?>,
        quantity: $('.product-info input[type=\'text\']').val()
    };
    yaCounter16843852.reachGoal('to_cart_product', yaGoalParams);
});
//--></script>

Сначала написал $('.product-info input[type=\'text\']') без метода val(), как увидел то твоего, Эдик, совета на главной странице http://jquery.com/ (в низу var hiddenBox = $( "#banner-message" );).
Потом посмотрел в Opera Dragonfly, что в reachGoal параметр Кол-ва передаётся как объект, добавил метод val(), стала передаватся строка (Opera Dragonfly показывает величину в кавычках)

Осталось не понятно после функции вал надо ли ставить точку с запятой или нет? (работает вроде, но вдруг это, например, дурной тон, ...)

Посмотрю как это в метрике учитывается, она с задержкой отображает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 3.7.2013, 11:11
Сообщение #6


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Litkevich Yuriy @ 1.7.2013, 22:51) *
Осталось не понятно после функции вал надо ли ставить точку с запятой или нет? (работает вроде, но вдруг это, например, дурной тон, ...)
Я ставлю, так как незнаешь как и кто реализует интерпретатор JavaScript... :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.7.2013, 11:30
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Эдик всё работает, как надо. Спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 15.8.2022, 15:09