Если Вы взглянете на код функции у инпута для ввода количества 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$, чтобы убедиться