Если Вы взглянете на код функции у инпута для ввода количества checkNumber, то увидите следующее
function checkNumber(obj, event, changePrice) { var err_msg = ''; var obj_id = $(obj).attr('id').split('-'); var pref = obj_id[0].replace(/^q/, ''); var id = obj_id[1]; $('#'+pref+'-'+id+'-options-selectors').find('input:checked, select').each(function(){ if($(this).val() === ''){ err_msg += '<li>'+$(this).parent().parent().find('span.opt').html().replace(':', '')+'</li>'; } }); if(err_msg !== ''){ err_msg = checkNumber_err.replace('%err_msg%', err_msg); shop_alert('<div class="MyWinError">'+err_msg+'<div>',checkNumber_header,'warning',350,100,{tm:8000,align:'left',icon:'/.s/img/icon/warning.png'}); return false; }else{ event = (event)?event:window.event; var code = (event.charCode) ? event.charCode : event.keyCode; var el = event.target || event.srcElement; if((code >=48 && code <=57) || (code == 37 ) || (code == 45) || (code==8) || (code==46)){ if(parseInt(changePrice)) setTimeout(function(){optChangePrice(obj)}, 100); return true; }else{ return false } }}
А именно важны строки
var obj_id = $(obj).attr('id').split('-');var pref = obj_id[0].replace(/^q/, '');var id = obj_id[1];
Т.е. чтобы это работало корректно, нужно чтобы $PRICE_RAW$ был обернут в span или div с id, где через дефис располагаются $BLOCK_PREF$ и $ID$, например так <span id="$BLOCK_PREF$-$ID$-price">1386</span>.
Посмотрите исходный код $PRICE$, чтобы убедиться