Ответы пользователя по тегу JavaScript
  • Как проверить оба инпута?

    @lolzqq
    HTML,CSS,JS,PHP
    Примените.eq(0) и .eq(1) https://api.jquery.com/eq/
    Т.е.
    if ($('.wrap_radio').children('input').eq(0).attr("checked") !== 'checked' && $('.wrap_radio').children('input').eq(1).attr("checked") !== 'checked'){...}
    Ответ написан
  • Затемнить background (картинку) в three.js?

    @lolzqq
    HTML,CSS,JS,PHP
    png картинки в редакторе не пробовали затемнить?
    Ответ написан
  • Надо разобраться c js?

    @lolzqq
    HTML,CSS,JS,PHP
    Решение через добавление/удаление заранее предустановленных в CSS стилей для классов
    Ответ написан
    Комментировать
  • Не проверяет номер телефона. В чем ошибка?

    @lolzqq
    HTML,CSS,JS,PHP
    Упрощённо работает так
    Ответ написан
    Комментировать
  • Как найти и вернуть слово из массива?

    @lolzqq
    HTML,CSS,JS,PHP
    Циклом пройтись по массиву - words[i], и проверять p.search(words[i]). Значение, отдаваемое p.search будет первым символом вхождения искомого в строку или -1, если слово не нашлось.
    Ответ написан
  • Как имитировать клик по reCAPTCHA с помощью JS/jQuery?

    @lolzqq
    HTML,CSS,JS,PHP
    Во фреймах другого ресурса не получится поработать с помощью javascript
    Ответ написан
  • Как "правильно" добавить форму для регистрации на сайте?

    @lolzqq
    HTML,CSS,JS,PHP
    Зайдите на сайты известных компаний, да поглядите через веб-инструменты. В чём проблема-то.
    Ответ написан
  • Как избавиться от множественного повторения forEach?

    @lolzqq
    HTML,CSS,JS,PHP
    godsplane, на своём опыте столкнулся с тем, что назначать, к примеру прослушиватели события click() на 250 элементов при загрузке страницы - это подвешивать её на 10-15 секунд в небытие
    Подвешивайте событие на <body>, а в обработчик передаёте нажатый элемент, распознаёте его, и, если был нажат нужный элемент - то делаете что-то дальше - фактически вешается один прослушиватель, никаких подвисонов, лагов и forEach для этого.

    Код, типа такого:
    document.querySelector('body').addEventListener('click', function(e) {
       // e.target кликабельный элемент
       // определяем, необходимый ли это эелемент
       if(e.target && (e.target.className.search('needed-element')!== -1){
          // тут работаем дальше с e.target или чем хотите
       }
    }


    P.S. при зажатии ЛКМ на кнопке Открывать - попап сворачивается, а если отпустить ЛКМ - снова разворачивается. Это баг или фича?
    Ответ написан
    6 комментариев
  • Как отобразить в теге img изображение возвращаемое Ajax запросом?

    @lolzqq
    HTML,CSS,JS,PHP
    - можете по get запросу с нужными вам параметрами каждый раз генерить картинку php скриптом библиотекой gd
    - с помощью скрипта, который обрабатывает ajax - отдавать url на скрипт генерящий картинку
    - получив в ответе этот url - вставляете его, как аттрибут src тега img - картинка прогружается с сервера

    альтернативно, если у вас есть просто набор готовых картинок
    - скрипт, который обрабатывает ваш ajax запрос - отдаёт url нужной картинки
    - получив в ответе этот url - вставляете его, как аттрибут src тега img - картинка прогружается с сервера

    На js добавление картинки в канвас проделать можно так:
    var canvas=document.querySelector('#canvas');
    var img = new Image();
    img.src = "face.jpg";
    img.onload = function() {canvas.drawImage(img, 10, 10);}
    Ответ написан
    3 комментария
  • Как во время скрола скрыть черный блок?

    @lolzqq
    HTML,CSS,JS,PHP
    С помощью Intersection Observer API
    Ответ написан
    Комментировать
  • Как сделать динамический select?

    @lolzqq
    HTML,CSS,JS,PHP
    В поиск codepen.io бы вбили dynamic select и нашли вот это https://codepen.io/jtaylor025/pen/WvVzWV
    Ответ написан
    Комментировать
  • Событие Change нужно сделать зависимые списки, и при выборе последнего должна выдаваться разная цена, как это сделать?

    @lolzqq
    HTML,CSS,JS,PHP
    Не знаю, должна ли быть связь между кол-вом комнат и площадью, при выборе именно площади - стоимости выдаёт разные, соответственно придуманным мной тарифам. Количество комнат в этом примере не учитывается.

    Код закомментировал, где в него влез и что-то переписал/добавил
    <!doctype html>
    <html lang="ru">
    <head>
      <meta charset="utf-8" />
      <title></title>
    
    </head>
    
    <body>
    <div class="select-locations select">
       <label for="location" class="location-label">Расположение</label>
    	<select class="select-street select-location" name="select-street" id="select-street" required>
    		<option value="sunny" selected="selected">ул.Солнечная</option>
    		<option value="kobceva">ул.Кобцева</option>
    		<option value="gagarina">ул.Гагарина</option>
    	</select>
    </div>
    <br>
    <div class="amount select area" id="input-select">
    	<label for="amount">Количество комнат</label>
    		<select class="select-room select-layout" name="select-room" id="select-room" required>
    			<option value="1">1</option>
    			<option value="2">2</option>
    			<option value="3">3</option>
    		</select>                       
    </div>
    <div class="layout-flat select">
    	<label for="layout">Общая площадь</label>
    	<select class="select-area area-block" name="select-area2" id="select-area" required>
    		
    	</select>
    <h3 class="last-price select">Цена <span class="price"></span></h3>
    </body>
    <script>
    function selectStreet(room,rooms){
      room.innerHTML = "";
      var c = this.value || "sunny", o;
      for(let i = 0; i < rooms[c].length; i++){
        o = new Option(rooms[c][i],i,false,false);
        room.add(o);
      };
    }
    function selectRoom(area,areas){
      area.innerHTML = "";
      var c = this.value || 1, o;
      for(let i = 0; i < areas[c].length; i++){
    	  // эту строчку модернизировал, чтобы в атрибут value выводилась площадь квартиры
        o = new Option(areas[c][i],areas[c][i],false,false); 
        area.add(o);
      };
    }
    function showPrice(tariffs,street,area){
    	// модифицировал вашу функцию
    	const selectElement = document.querySelector('.select-area');
    	
    	
    	selectElement.addEventListener('change', (event) => {
    		var street_option=street.value; // получаем значение улицы
    		var area_option=area.value; // получаем площадь квартиры
    		var tariff=tariffs[street_option]; // выбираем тариф
    		var cost=area_option*tariff; // перемножаем площадь квартиры на тариф
    	  
    	  const result = document.querySelector('.price');
    	  // вставляем вычисленную цену в '.price'
    	  result.textContent = cost;
    	});	
    }
    
    document.addEventListener("DOMContentLoaded", function(){
    	var	rooms = {
    	  sunny: ["1", "2", "3"],
    	  kobceva: ["1", "2", "3"],
    	  gagarina: ["1", "2"]
    	};
    	var	areas = {
    	  1: ["41.27", "46.96", "48.31"],
    	  2: ["68.33", "69.64", "70.97", "72.39"],
    	  3: ["67.31", "67.60","86.23", "94.54"]
    	};
    	// поскольку вы не указали, какой будет алгоритм расчёта цен,
    	// я решил, что это будут тарифы, зависящие от улицы
            // при желании, можете усложнить структуру и прописать свою цену для каждого набора квартир
            // тогда и в функции showPrice() нужно будет побольше факторов учитывать
            // в строке var tariff=tariffs[street_option]; // выбираем тариф - навигация будет иметь больше [ ] скобок
    	var tariffs = {
    		sunny: 100, // для улицы sunny квадратный метр стоит 100 ед.
    		kobceva: 200, // для улицы kobceva квадратный метр стоит 200 ед.
    		gagarina: 300 // для улицы gagarina квадратный метр стоит 300 ед.
    	}
    	var	street = document.getElementById("select-street");
    	var	room = document.querySelector("#select-room");
    	var	area = document.querySelector("#select-area");
    	selectStreet(room,rooms);
    	selectRoom(area,areas);
    	
    	street.addEventListener('change',selectStreet(room,rooms))
    	room.addEventListener('change',selectRoom(area,areas))
    	
    	showPrice(tariffs,street,area);
    
    	
    })
    
    </script>
    </html>
    Ответ написан
    3 комментария
  • Как написать регулярку на допуск только цифр и точек?

    @lolzqq
    HTML,CSS,JS,PHP
    [0-9\.]{1,} + сравнить длину найденной строки с длиной всей введённой строки - если различаются - значит есть что-то лишнее
    Ответ написан
    Комментировать
  • Как отправить много значений в jQuery?

    @lolzqq
    HTML,CSS,JS,PHP
    в одну строку объедините $text=sdhajgdj&num=23123&...
    Ответ написан
    Комментировать
  • Datatables как указывать страницу?

    @lolzqq
    HTML,CSS,JS,PHP
    вызвать click() по
    <a class="paginate_button " aria-controls="example" data-dt-idx="3" tabindex="0">3</a>
    Ответ написан
    Комментировать
  • Как правильно написать слайдер для видео?

    @lolzqq
    HTML,CSS,JS,PHP
    грузите одно так, как показали в коде нам, замеряете на js размеры блока
    остальные грузите также, только вместо
    <video class="video" playsinline autoplay muted loop>
                  <source
                    src="assets/video/fall.mp4"
                    type="video/mp4">
                </video>

    оставьте заглушку-картинку для начала с теми же размерами, как и для первого слайда с видосом
    Ответ написан
    Комментировать
  • Кто знает как делать такие анимации?

    @lolzqq
    HTML,CSS,JS,PHP
    Простые без затей на css

    Сложные уже на three.js
    Ответ написан
    4 комментария
  • Как сделать в FullPage.js прокрутку через один блок?

    @lolzqq
    HTML,CSS,JS,PHP
    Если вызывать какие-либо прокрутки слайдов/секций в событии onLeave - мы вызываем бесконечный цикл рекурсий (fullpage там что-то внутри себя бесконечно пытается сделать и не может выйти из цикла). Обходим это через глобальный флаг. В коде всё закомментировал, можете почитать-изучить

    <!doctype html>
    <html lang="ru">
    <head>
      <meta charset="utf-8" />
      <title></title>
      <link rel="stylesheet" type="text/css" href="/fullpage/fullpage.css" />
            <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
    	<script src="/fullpage/vendors/easings.min.js"></script>
    	<script type="text/javascript" src="/fullpage/vendors/scrolloverflow.min.js"></script>
    	<script type="text/javascript" src="/fullpage/fullpage.js"></script>
    </head>
    <body>
    	<div id="fullpage">
    	<div class="section" id="slide1">1</div>
    	<div class="section" id="slide2">2</div>
    	<div class="section" id="slide3">3</div>
    	<div class="section" id="slide4">4</div>
    	</div>
    
    	<script>
    	// этой переменной будем отмечать готовность fullpage крутить на третью секцию
    	window.scrollto3=false; 
    	// создаём таймер, который каждые 100мс будет отслеживать window.scrollto3==true;
    	// который по-готовности делает прокрутку с первой секции сразу до третьей
    	let timer=setInterval(function(){ 
    		if(window.scrollto3==true){
    			// пользуемся fullpage_api для прокрутки на нужную секцию
    			fullpage_api.moveTo(3);
    			// возвращаем маркер готовности прокрутки до третьей секции в исходное состояние
    			window.scrollto3=false;
    		}
    	},100);
    	
    	$(document).ready(function(){
    		$('#fullpage').fullpage({
    
    				navigationPosition: 'left',
    				navigation:true,
    				navigationTooltips: ['Дальний', 'Ближний', 'Воздух', 'Земля'],
    				showActiveTooltip: false,
    				menu: '#menu',
    				scrollingSpeed: 1000,
    
    				onLeave: function(origin, destination, direction) {
    							// если сейчас юзер пытается уйти вниз с 0-ой (первой) секции 
    							if(origin.index == 0 && direction =='down'){
    								// если пункт назначения - вторая секция
    								if(destination.index == 1){
    									// ставим маркер готовности к прокрутке до третьего слайда
    									window.scrollto3=true;
    									// запрещаем прокрутку до следующего слайда, которая делается по-умолчанию
    									return false;
    								}
    							}
    				}
    		})
    		
    	})
    	</script>
    </body>
    </html>
    Ответ написан
    4 комментария
  • Как седлать рандом с примером ниже толь с шансом на выпадение какого либо варианта (JavaScript Jquery)?

    @lolzqq
    HTML,CSS,JS,PHP
    rand=Math.random() // получаем число от 0 до 1
    var text = [
          [0,0.5,'Текст1'], // 0,0.5 - разброс значений, попадание в который будем сравнивать с rand, 'Текст1' - ваш текст
          [0.5,0.8,'Текст2'],
          [0.8,0.95,'Текст3'],
          [0.95,1,'Текст4']
    ]
    for(i=0;i<=text.length-1;i++){
          if(rand>=text[i][0] && rand<=text[i][1]){
                alert(i);
                break;
          }
    }
    Ответ написан
    Комментировать
  • Как сохранить версию для печати в pdf через javascript?

    @lolzqq
    HTML,CSS,JS,PHP
    Тут уже дали ответ как генерировать pdf на клиенте
    Тут дали ответ, как загружать сгенерированный на клиенте файл пользователю.
    Ответ написан