Закомментировать данный код в chosen.jquery.js
AbstractChosen.browser_is_supported = function() {
/*
if ("Microsoft Internet Explorer" === window.navigator.appName) {
return document.documentMode >= 8;
}
if (/iP(od|hone)/i.test(window.navigator.userAgent) || /IEMobile/i.test(window.navigator.userAgent) || /Windows Phone/i.test(window.navigator.userAgent) || /BlackBerry/i.test(window.navigator.userAgent) || /BB10/i.test(window.navigator.userAgent) || /Android.*Mobile/i.test(window.navigator.userAgent)) {
return false;
}
*/
return true;
};
Для нормальной работы ui на мобильных устройствах подключить https://github.com/furf/jquery-ui-touch-punch
Добавить muted=true
, например:
Когда нужно совместить Chosen (https://harvesthq.github.io/chosen/) и Autocomplete Widget (https://api.jqueryui.com/autocomplete/), например, при очень большом списке.
$("select.chosen").chosen({width:"100%"});
$('.accessories .search-field input').each(function(i,el){
el=$(el);
el.autocomplete({
minLength:3,
delay:2000,
source:function(request,response){
var select=el.closest('.accessories').find('select');
$.ajax({
url:"/?sc="+request.term,
dataType:"json",
success:function(data){
select.find('option').not(':selected').remove();
response($.map(data,function(item){
if(!(select.find('option[value='+item.id+']').length>0)){
select.append('<option value="'+item.id+'">'+item.name+' ['+item.part+']</option>');
}
}));
select.trigger("chosen:updated");
}
});
},
});
});
Пример php для ajax:
if(isset($_GET['sc'])){
header("Content-Type: application/json");
$result=get_from_base('`id`,`part`,`name`','catalog',"`part` LIKE '%".$_GET['sc']."%'",'`parent`,`pos`');
echo json_encode($result);
exit();
}
Сам select:
<div class="accessories">
<select name="accessories[]" multiple="multiple" class="chosen" data-placeholder="Выбрать позиции">
<?if(count($catalog_accessories)>0){?>
<?foreach($catalog_accessories as $v){?>
<option value="<?=$v['id']?>"<?if(in_array($v['id'],$change_catalog_accessories)){?> selected="selected"<?}?>><?=$v['name']?> [<?=$v['part']?>]</option>
<?}?>
<?}?>
</select>
</div>
Другие данные:
$change_catalog_accessories=array();
$change_catalog=get_by_id($_GET["uid"],'catalog');
if($change_catalog['accessories']!=''){
$change_catalog_accessories=explode(',',str_replace("'","",$change_catalog['accessories']));
$catalog_accessories=get_from_base('`id`,`name`,`part`','catalog',"`shown`=1 and `id`!='".$change_catalog['id']."' and `id` in (".$change_catalog['accessories'].")",'`parent`,`pos`');
}