in file /components/com_hikashop/classes/flter.php ... where the condition is filter_data==price. Relevant code snippets below...
if(($filter->filter_data=='price' || $filter->filter_data=='information' || $filter->filter_data=='custom_field') && !empty($filter->filter_value)){
if(parent::checkCurrency($filter)==false){ return false;}
$size=count($filter->filter_value);
if($size){
$config = hikashop_config();
[color=red]if($config->get('redirect_post')){[/color]
$selected = array_chunk($selected, 2);
foreach($selected as $k => $v){
$selected[$k] = implode('::', $v);
}
}
In the code above, I assume the condition of $config->get('redirect_post') should not be included ... so that $selected can get loaded for use later. Allowing a this to not be set in some scenarios seems to be an error.
Then when the input boxes are created for price-range options...
if($key==0){
if(!empty($selected) && is_array($selected) && in_array('::'.$value, $selected)){
$checked='checked="checked"';
if($type=='radio'){ $deleteButton=' '.parent::getDeleteButton($filter, $divName, '', $html, '', true, 'filter_'.$filter->filter_id.'_'.$value.'' ); }
}
$html.='<span class="hikashop_filter_checkbox"><input '.$onClick.' '.$checked.' type="'.$type.'" name="filter_'.$filter->filter_namekey.''.$tab.'" value="::'.$value.'" id="filter_'.$filter->filter_id.'_'.$value.'"/><label class="filter_'.$filter->filter_namekey.''.$tab.'" for="filter_'.$filter->filter_id.'_'.$value.'">'.JText::sprintf('X_AND_INFERIOR',$formatVal).'</label>'.$deleteButton.'</span>'.$br;
parent::getDeleteButton($filter, $divName, '', $html, true);
}else{
if(!empty($selected) && is_array($selected) && in_array($filter->filter_value[$key-1].'::'.$value, $selected)){
$checked='checked="checked"';
if($type=='radio'){ $deleteButton=' '.parent::getDeleteButton($filter, $divName, '', $html, '', true, 'filter_'.$filter->filter_id.'_'.$value.'' ); }
}
$html.='<span class="hikashop_filter_checkbox"><input '.$onClick.' '.$checked.' type="'.$type.'" name="filter_'.$filter->filter_namekey.''.$tab.'" value="'.$filter->filter_value[$key-1].'::'.$value.'" id="filter_'.$filter->filter_id.'_'.$value.'"/><label class="filter_'.$filter->filter_namekey.''.$tab.'" for="filter_'.$filter->filter_id.'_'.$value.'">'.JText::sprintf('FROM_X_TO_Y', $oldVal, $formatVal ).'</label>'.$deleteButton.'</span>'.$br;
}
if($key==$size-1){
$checked=''; $deleteButton='';
if(!empty($selected) && is_array($selected) && in_array($value.'::', $selected)){
$checked='checked="checked"';
if($type=='radio'){ $deleteButton=' '.parent::getDeleteButton($filter, $divName, '', $html, '', true, 'filter_'.$filter->filter_id.'_'.$value.''); }
}
$html.='<span class="hikashop_filter_checkbox"><input '.$onClick.' '.$checked.' type="'.$type.'" name="filter_'.$filter->filter_namekey.''.$tab.'" value="'.$value.'::" id="filter_'.$filter->filter_id.'_'.$value.'"/><label class="filter_'.$filter->filter_namekey.''.$tab.'" for="filter_'.$filter->filter_id.'_'.$value.'">'.JText::sprintf('X_AND_SUPERIOR', $formatVal ).'</label>'
}
In this code, the id for the second to last and last input is exactly the same. I was able to avoid this by building the id value this way:
from
id="filter_'.$filter->filter_id.'_'.$value.'"
to
id="filter_'.$filter->filter_id.'_'.$value.'_plus"
I applied this to the
id= and to the
for= attribute.
This makes the last item have a unique value instead of shared with that of the preceding input.