Замена input на select в корзине

Всем привет!
Есть у меня задача, заменить input на select в корзине, в общем то я все сделал, отображается все норм и выводится.
Но только Пересчет всех товаров в корзине перестал срабатывать на select.
Облазил файл shopkeeper.js ища где и что подправить, но так и не определил, что именно нужно поправить.

Я думаю надо просто вызвать такой код:

$(document).on('change', '#shopCart select', SHK.recountItemAll);

Селектор '#shopCart select' думаю сможете подправить сами, если потребуется.

@Andchir Пересчет действительно начал срабатывать, только он не подтягивал новое число из select.
Пришлось вернуть input, скрыть его и изменять значение в нем по событию change select`а, затем вызывать для input событие keyup
Кусочек кода, который может кому то пригодится:

// #shk_prodCount - это скрытый input
$(document).on('change', '#shopCart select', function(){
  var th = $('#shopCart select option:selected').val();
  $('#shk_prodCount').val(th);
  $('#shk_prodCount').keyup();
});

Оп, все не верно! Щас переделаю

У селекта какой name? Надо поставить такой же как был у инпута.

@Andchir

Кусочек кода, который может кому то пригодится (исправленый):

$(document).on('change', '#shopCart select', function(){
  var value = $(this).find('option:selected').val(); // новое значение select
  var inpt = $(this).parent('.quantity').find('.shk-count'); // Скрытый input
  inpt.val(value);
  inpt.keyup();
});

@Andchir сказал Замена input на select в корзине:

А селекта какой name? Надо поставить такой же как был у инпута.

name="count[]"

Это все ставил, тут дело еще в том, что select и input разные по своей сути. Если у input сразу можно значение получить, то у select`а надо искать селектор option:selected...
В общем сейчас все норм работает без коренного изменения скрипта shopkeeper.js :)

Если у input сразу можно значение получить, то у select`а надо искать селектор option:selected...

Value берутся одинаково. На чистом JS:

var value = select.value;

На jQuery:

var value = select.val();

Демо: https://jsfiddle.net/p6sjp85s/

И form.serialize() должен работать одинаково.

@Andchir сказал Замена input на select в корзине:

Value берутся одинаково. На чистом JS:

Хм, действительно:

$(document).on('change', '#shopCart select', function(){
  var value = $(this).val(); // новое значение select
  var inpt = $(this).parent('.quantity').find('.shk-count'); // Скрытый input
  inpt.val(value);
  inpt.keyup();
});

Так тоже работает :)

@Andchir В общем сделав вывод, переделал скрипт.
Тот код что выше убираем вообще и забываем.
Далее в функции setCounterToField (файл shopkeeper.js) меняем:

/*fields.filter(':text').each( function( i ){*/
fields.filter('select').each( function( i ){

А так же:

/*el.bind('keyup',function(e){*/
el.on('change',function(e){

И в целом будет работать, хотя еще много чего можно выкинуть/закомментировать из этой функции.

Функция полностью:

    /* Добавляет кнопки управления счетчиком для поля*/
	setCounterToField: function( fields, callback ){
		if ( fields.size() > 0 ) {
			fields.filter('select').each( function( i ){
				var el = $(this);
				el.on('change',function(e){
					if ( typeof callback == 'function' ) { callback( $(this) ); }
				});
			});
		}
	},

Да и в функции counterFieldCartInit

//SHK.setCounterToField( $('[data-shopcart] input.shk-count'), callback );
SHK.setCounterToField( $('[data-shopcart] select.shk-count'), callback );

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

Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.