#javascript #jquery #html #ajax #select
#javascript #jquery #HTML #ajax #выберите
Вопрос:
Я создал простое веб-приложение, используя AJAX и jQuery. У меня есть форма с серией элементов, вставленных в выбор, которые фильтруются по имени клиента. Я обновляю данные выбора с помощью jQuery при изменении клиента. Моя проблема в том, что, поскольку элементов много, около 20 000 для каждого клиента, когда я выполняю обновление, часто появляется предупреждающее сообщение javascript о том, что скрипт библиотеки jquery может быть занят или перестал работать. Итак, я ищу какое-нибудь предложение по управлению этими большими данными.
ОТРЕДАКТИРУЙТЕ некоторый код, если это может быть полезно
function cstm_itm(id_for, id_art, tip){
fade( $('#' id_art) , 0 ,function(){});
var dati= 'for=' $('#' id_for).val() 'amp;tip=' tip;
$.ajax({
type:'POST',
url: 'cstm_itm_upd.php',
data: dati,
beforeSend: function (http) {
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
},
success: function(response){
fade( $('#' id_art), 0,
function(){
$('#' id_art).html(response);
$('#' id_art).change();
fade( $('#' id_art) , 1 ,
function(){}
);
}
);
}
});
}
<select id="n_art_d_s" class="field" tabindex="-1"
onchange=" $('#n_art_d').val( $('#n_art_d_s').children(':selected').text() );
$('#n_art_d_t').val( $('#n_art_d_s').children(':selected').text() );
$('#n_art').val( this.value );
$('#n_art_c_d_s').val($('#n_art_d_s').val());
if($('#tmp_sta').val()==0) $('#n_art_c_d_s').change();
"
onfocus=" $('#tmp_sta').val(0);"
style="width:25px; margin-left: .3em; background-color: #edf7ff; " >
<option value="" selected=""></option>
<option value="123" title="Desc 1">Item 1</option>
<option value="456" title="Desc 2">Item 2</option>
...
</select>
РЕДАКТИРОВАТЬ-ЗАКРЫТЬ Я последовал предложению @2182349 и нашел эти примеры, на которых строится мое решение.
Комментарии:
1. Как элемент select, содержащий 20 000 опций, может быть полезен или использоваться кем-либо?
2. Согласен с @1252748 — Если вам нужно одновременно отображать 20 000 параметров, возможно, простой элемент выбора — это не тот пользовательский интерфейс, который вам нужен. Или, возможно, вам следует изучить способы разделения этих параметров или отображать только подмножество в любом заданном выборе. Это кажется слишком большим.
3. Лучшее решение — установить ограничение на количество элементов, которые можно загружать без проблем с производительностью. Если есть больше записей, превышающих лимит, используйте какую-либо навигацию, чтобы получить следующий фрагмент данных.
4. Используйте автозаполнение, чтобы позволить пользователям выбирать элементы. jqueryui.com/autocomplete
5. Используя jQuery и выполняя JavaScript со встроенными обработчиками событий???