При выполнении onchange заависает страница
Доброго времени суток.
В общем ситуация следующая: Есть сайт. На сайте установлен плагин jquery selecter На одном из селектов висит onchange с функцией прописан прям в теге Код самой функции:
function getprk(prdctid)
{
var quantity = document.getElementById(prdctid+'quantity').value;
var variation_id = document.getElementById(prdctid+'variation_id').value;
document.getElementById('kenars_cart_val').value=prdctid;
$.get('//xn--80aaokptod6b.xn--p1ai/ame.php?page=get_price&prod_id='+prdctid+'&variation_id='+variation_id+'&quantity='+quantity, function(data) {
var extv=data
var rezv = document.getElementById(prdctid+'price').innerHTML;
var arr=explode('amount">',rezv);
var otr = arr[1];
otr=explode(' <span',otr);
var cena = parseInt(otr[0]);
rezv = str_replace('amount">'+cena+' ', 'amount">'+extv+' ', rezv);
document.getElementById(prdctid+'price').innerHTML=rezv;
});
}
str_replace и explode взяты с сайта javascript.ru раздел аналоги функций php Так вот при изменении селекта функция то выполняется как надо но потом страница зависает и браузер выдает ошибку "эта страница работает очень медленно" При этом если jquery selecter убрать то все нормально. А с ним зависает. Подскажите пожалуйста в чем может быть причина и как лечить? |
Цитата:
|
Нет, с ответом сервера все ровно. Я же говорю если jquery selecter отключить то onchange нормально отрабатывает без зависаний. Какая то проблема именно в отработке события у измененного селекта. И я не могу понять в чем причина. Дебаггер молчит. Может есть какие то тонкости ыв использовании это jquery selecter'а?
|
Цитата:
Цитата:
Вот к чему на сервере плодить данные, которые приходится вот так ковырять - explode('amount">',rezv);, explode(' <span',otr);, str_replace('amount">'+cena+' ', 'amount">'+extv+' ', rezv);? И нафига нужен аналог explode, если это спокойно сделает split()? И аналог str_replace? И вообще зачем весь этот бедлам, что более удобной структуры/типа данных для обмена не существует? |
Цитата:
Тот факт, что все селекты, чекбоксы и радиокнопки, не только в браузере, но и во всей ОС выполнены в одном стиле, помогает пользователям лучше понимать функциональность разных элементов, появляющихся на сайте. Нативный select предлагает удобство использования. Например, select для iOS представляет собой “барабан”, а для Android — попап с пунктами для выбора. Стандартный select позволяет использовать не два щелчка мышью (открыть, выбрать), а только один (открыть, потянуть, отпустить), прокрутку длинного списка не скроллом, а таким же образом — понянуть, проскроллить, отпустить. Единицы среди сотни реализаций кастомных селектов полностью повторяют механику нативных, а это очень сильно сказывается на удобстве использования т.к. большинство взаимодействий с интерфейсом у пользователя завязано на рефлексах. Производители браузеров тратят бесчисленные часы на создание нативной поддержки для многих вещей, что улучшает как удобство использования, так и жизнь разработчика. Используйте эти нативные функции. Цитата:
Один из тех самых компонентов с вашего сайта, стилизованный при помощи CSS. (и оно работает даже в браузере Chrome 65 на Android)
<label class="custom-select" data-label="Фасовка">
<select>
<option>0.1 кг</option>
<option>0.5 кг</option>
<option>1 кг</option>
</select>
</label>
<style>
.custom-select {
position: relative;
display: inline-block;
margin-top: 24px;
}
.custom-select:before{
content: attr(data-label);
font-weight: 700;
text-align: center;
right: 0; left: 0;
position: absolute;
top: -24px;
}
.custom-select select {
background: #fff;
color: #222;
border: 1px solid #ccc;
cursor: pointer;
margin: 0;
padding: 10px 15px;
padding-right: 36px;
border-radius: 3px;
-moz-appearance: none;
-webkit-appearance: none;
font: inherit;
font-size: 13px;
}
.custom-select select:focus {
outline: none;
-webkit-tap-highlight-color: transparent;
box-shadow: 0 0 5px rgba(0, 0, 0, .1);
}
.custom-select:after {
position: absolute;
top: 0; bottom: 0; right: 15px;
width: 13px; height: 6px;
margin: auto 0;
background: url(https://xn--80aaokptod6b.xn--p1ai/wp-content/themes/FreeShopWooCommerceTheme/images/no-translate-detected_318-11165.jpg) no-repeat;
background-size: 11px;
pointer-events: none;
content: "";
}
/* дальше только для этого примера */
body { font-family: 'Roboto Condensed', sans-serif; }
</style>
<link href="https://fonts.googleapis.com/css?family=Roboto+Condensed" rel="stylesheet">
|
| Часовой пояс GMT +3, время: 17:13. |