Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123

Открыть новую тему     Написать ответ в эту тему

Demon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
а чем обычный селект не подходит?

Это сильно банально.
 
Вот, что нашел, может кому-то пригодится:
jQuery UI Month Picker Plugin
jquery.mtz.monthpicker
Air Datepicker

Всего записей: 612 | Зарегистр. 03-10-2001 | Отправлено: 12:55 08-01-2025
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Demon

Цитата:
Это сильно банально.

так оформите через css, чтобы было не банально.
мудрить для такого что то особенное - избыточно.
 
ps: если у вас html5 и нормальный браузер, то можно вообще обойтись без сторонних скриптов - https://jsfiddle.net/qahr4b10/

Всего записей: 16309 | Зарегистр. 20-09-2014 | Отправлено: 21:03 08-01-2025 | Исправлено: Mavrikii, 07:04 09-01-2025
Death_INN

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На этой странице в столбце Обновления при наведении мыши на дату с числом всплывает хрень, которая мне не нужна, мешает и выбешивает.
Достаточно ли такого кода или лучше действовать через удаление аттрибутов?

Код:
[...document.getElementsByClassName("flafter")].forEach(s => s.onmouseover = s.onmouseout = "");
//  document.querySelectorAll(".flafter").forEach(s => s.onmouseover = s.onmouseout = "");

Всего записей: 3928 | Зарегистр. 24-10-2002 | Отправлено: 23:12 02-03-2025 | Исправлено: Death_INN, 23:54 02-03-2025
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Death_INN

Цитата:
при наведении мыши на дату с числом всплывает хрень, которая мне не нужна, мешает и выбешивает.

идете сюда
http://forum.ru-board.com/tools.cgi?action=settings
и ставите галку в

Цитата:
Использовать всплывающие окна для предпросмотра сообщений?

Всего записей: 16309 | Зарегистр. 20-09-2014 | Отправлено: 02:04 03-03-2025
Death_INN

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii, не знал, что есть опция, задействовал. Хотя у меня приват режим и куки не сохраняются, так что при гостевом посещении форума трабла остается, но придумал такое *monkey решение, чтобы не заморачиваться с прослушками

Код:
document.head.appendChild(document.createElement("style")).append(`.flafter {pointer-events: none;}`);

Всего записей: 3928 | Зарегистр. 24-10-2002 | Отправлено: 10:30 03-03-2025
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Death_INN

Цитата:
Хотя у меня приват режим и куки не сохраняются, так что при гостевом посещении форума трабла остается,

можно также просто постоянно выставлять куку, что вырубает загрузку ajax кода.

Всего записей: 16309 | Зарегистр. 20-09-2014 | Отправлено: 03:01 04-03-2025
vs6262



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JavaScript function to display SVG [?]
вот сгенерил с помощью ИИ. несколько раз в разных ИИ ставил запросы, просто удобная JS функция. может комуто пригодится.

Всего записей: 2240 | Зарегистр. 25-02-2013 | Отправлено: 14:20 04-03-2025
Death_INN

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii, куку можно, но пашет только после обновления страницы

Всего записей: 3928 | Зарегистр. 24-10-2002 | Отправлено: 14:37 04-03-2025
Death_INN

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как в лисе добавить свою кнопку (которая пока ниче не делает) на страницу about:preferences, а точнее на about:preferences#privacy, чтобы кнопка располагалась чуть ниже кнопки Manage Exceptions... раздела Cookies and Site Data?
Подгрузить скрипт не проблема, но нужно чтобы пахало в 4 режимах:
открытие about:preferences (about:preferences#privacy) в текущей или фоновой вкладках
 
Кусок кода

Код:
var btn = document.createXULElement("button");
btn.setAttribute("id", "listCE");
btn.className = "accessory-button";
btn.setAttribute("label", "Test...");
document.getElementById("cookieExceptions").after(btn);

 
Трабла в том, что часто в консоли вижу ошибку: document.getElementById(...) is null
Напрашивается задержка, но и она не спасает, если открываем about:preferences в фоне без переключения на вкладку
 
Может вместо задержки заюзать, что-то типа
 
var btnAdd = () => document.getElementById("cookieExceptions").after(btn)
 
а на пункт Privacy & Security навесить addEventListener mousedown?

Всего записей: 3928 | Зарегистр. 24-10-2002 | Отправлено: 13:37 10-04-2025 | Исправлено: Death_INN, 13:49 10-04-2025
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Death_INN
специфика работы FF обсуждается в других темах, это не вопросы по javascript

Всего записей: 16309 | Зарегистр. 20-09-2014 | Отправлено: 19:48 10-04-2025
TheBarmaley



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Death_INN [?]
Цитата:
Напрашивается задержка, но и она не спасает
как реализовано? если что - классика сеттаймаут должна по-любому рулить, останется только подобрать время..)

----------
..the one of.. ··· ..sam-&-pol..

Всего записей: 18403 | Зарегистр. 07-06-2006 | Отправлено: 20:22 10-04-2025
Demon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Использую модальные окна основанные на jqueryui.
 
Вот простой пример:
 
 
<!DOCTYPE html><html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Dialog - Modal form</title>
  <link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="https://jqueryui.com/resources/demos/style.css">
  <style>
    label, input { display:block; }
    input.text { margin-bottom:12px; width:95%; padding: .4em; }
    fieldset { padding:0; border:0; margin-top:25px; }
    h1 { font-size: 1.2em; margin: .6em 0; }
    div#users-contain { width: 350px; margin: 20px 0; }
    div#users-contain table { margin: 1em 0; border-collapse: collapse; width: 100%; }
    div#users-contain table td, div#users-contain table th { border: 1px solid #eee; padding: .6em 10px; text-align: left; }
    .ui-dialog .ui-state-error { padding: .3em; }
    .validateTips { border: 1px solid transparent; padding: 0.3em; }
  </style>
  <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
  <script src="https://code.jquery.com/ui/1.13.2/jquery-ui.js"></script>
  <script>
  $( function() {
    var dialog, form,
 
      // From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29
      emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,
      name = $( "#name" ),
      email = $( "#email" ),
      password = $( "#password" ),
      allFields = $( [] ).add( name ).add( email ).add( password ),
      tips = $( ".validateTips" );
 
    function updateTips( t ) {
      tips
        .text( t )
        .addClass( "ui-state-highlight" );
      setTimeout(function() {
        tips.removeClass( "ui-state-highlight", 1500 );
      }, 500 );
    }
 
    function checkLength( o, n, min, max ) {
      if ( o.val().length > max || o.val().length < min ) {
        o.addClass( "ui-state-error" );
        updateTips( "Length of " + n + " must be between " +
          min + " and " + max + "." );
        return false;
      } else {
        return true;
      }
    }
 
    function checkRegexp( o, regexp, n ) {
      if ( !( regexp.test( o.val() ) ) ) {
        o.addClass( "ui-state-error" );
        updateTips( n );
        return false;
      } else {
        return true;
      }
    }
 
    function addUser() {
      var valid = true;
      allFields.removeClass( "ui-state-error" );
 
      valid = valid && checkLength( name, "username", 3, 16 );
      valid = valid && checkLength( email, "email", 6, 80 );
      valid = valid && checkLength( password, "password", 5, 16 );
 
      valid = valid && checkRegexp( name, /^[a-z]([0-9a-z_\s])+$/i, "Username may consist of a-z, 0-9, underscores, spaces and must begin with a letter." );
      valid = valid && checkRegexp( email, emailRegex, "eg. ui@jquery.com" );
      valid = valid && checkRegexp( password, /^([0-9a-zA-Z])+$/, "Password field only allow : a-z 0-9" );
 
      if ( valid ) {
        $( "#users tbody" ).append( "<tr>" +
          "<td>" + name.val() + "</td>" +
          "<td>" + email.val() + "</td>" +
          "<td>" + password.val() + "</td>" +
        "</tr>" );
        dialog.dialog( "close" );
      }
      return valid;
    }
 
    dialog = $( "#dialog-form" ).dialog({
      autoOpen: false,
      height: 600,
      width: 850,
      modal: true,
      buttons: {
        "Create an account": addUser,
        Cancel: function() {
          dialog.dialog( "close" );
        }
      },
      close: function() {
        form[ 0 ].reset();
        allFields.removeClass( "ui-state-error" );
      }
    });
 
    form = dialog.find( "form" ).on( "submit", function( event ) {
      event.preventDefault();
      addUser();
    });
 
    $( "#create-user" ).button().on( "click", function() {
      dialog.dialog( "open" );
    });
  } );
  </script>
</head>
<body>
 
<div id="dialog-form" title="Create new user">
  <p class="validateTips">All form fields are required.</p>
 
  <form>
    <fieldset>
      <label for="name">Name</label>
      <input type="text" name="name" id="name" value="Jane Smith" class="text ui-widget-content ui-corner-all">
      <label for="email">Email</label>
      <input type="text" name="email" id="email" value="jane@smith.com" class="text ui-widget-content ui-corner-all">
      <label for="password">Password</label>
      <input type="password" name="password" id="password" value="xxxxxxx" class="text ui-widget-content ui-corner-all">
 
      <!-- Allow form submission with keyboard without duplicating the dialog button -->
      <input type="submit" tabindex="-1" style="position:absolute; top:-1000px">
    </fieldset>
  </form>
</div>
 
 
<div id="users-contain" class="ui-widget">
  <h1>Existing Users:</h1>
  <table id="users" class="ui-widget ui-widget-content">
    <thead>
      <tr class="ui-widget-header ">
        <th>Name</th>
        <th>Email</th>
        <th>Password</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>John Doe</td>
        <td>john.doe@example.com</td>
        <td>johndoe1</td>
      </tr>
    </tbody>
  </table>
</div>
<button id="create-user">Create new user</button>
</body></html>
 
Если в функции открытия окна убрать height: 600 Окно будет соответствовать содержимому. Если динамически менять количество строк, высота окна будет соответствовать содержимому. Это здорово! Но, при этом не меняется центровка окна по вертикали. Можно ли перецентрировать окно? Можно ли изначально задать позицию окна по вертикали?

Всего записей: 612 | Зарегистр. 03-10-2001 | Отправлено: 10:28 18-04-2025
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Можно ли перецентрировать окно?

можно
после изменения размера  
https://api.jqueryui.com/dialog/#option-position
примеры там есть

Всего записей: 16309 | Зарегистр. 20-09-2014 | Отправлено: 10:48 18-04-2025
Demon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
можно
после изменения размера  
https://api.jqueryui.com/dialog/#option-position
примеры там есть

Благодарю, но опция position определяет позицию при открытии. Мне же нужно изменить расположение диалога когда он уже открыт.

Всего записей: 612 | Зарегистр. 03-10-2001 | Отправлено: 11:42 18-04-2025
Demon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 
Цитата:
можно
после изменения размера  
https://api.jqueryui.com/dialog/#option-position
примеры там есть
 
Благодарю, но опция position определяет позицию при открытии. Мне же нужно изменить расположение диалога когда он уже открыт.

 
Изменить положение диалога получилось только так: .ui-dialog{top: 100px !important;}

Всего записей: 612 | Зарегистр. 03-10-2001 | Отправлено: 14:19 18-04-2025
Death_INN

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кто из просвещенных сможет объснить это и возможно ли обойтись без eval?

Код:
TKK=eval('((function() {var a\x3d817046147;var b\x3d-335196159;return 410049+\x27.\x27+(a+b)})())');

Всего записей: 3928 | Зарегистр. 24-10-2002 | Отправлено: 11:34 03-05-2025
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Death_INN

Цитата:
возможно ли обойтись без eval?

только если функция описана не в строке. смысле eval в том, чтобы перевести содержимое строки в фактический код. иначе - писать, по сути, свой интерпретатор.
 
а что тут объяснять? определяет функцию и выполняет ее, а результат присваивает переменной TKK
 

Код:
TKK = (function() {
    var a = 817046147;
    var b = -335196159;
    return 410049 + '.' + (a + b)
})()

 
TKK = "410049.481849988"

Всего записей: 16309 | Зарегистр. 20-09-2014 | Отправлено: 18:45 03-05-2025
Death_INN

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii, понятно, но не понятно почему бы просто не записать TKK = "410049.481849988". Проверить не могу, т.к. сейчас гугл при POST запросе на сервак переводчика не требует хеш

Всего записей: 3928 | Зарегистр. 24-10-2002 | Отправлено: 00:11 04-05-2025
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Death_INN

Цитата:
понятно, но не понятно почему бы просто не записать TKK = "410049.481849988"

потому что это обфускация кода.
https://ru.wikipedia.org/wiki/Обфускация_(программное_обеспечение)
способов может быть много
https://habr.com/ru/companies/skillfactory/articles/814801/

Всего записей: 16309 | Зарегистр. 20-09-2014 | Отправлено: 00:13 04-05-2025 | Исправлено: Mavrikii, 00:15 04-05-2025
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую, такой вопрос.
Есть массив элементов на странице, некоторые из которых выходят за viewport. По аналогии с каруселью, где только заданное число элементов видны, остальные далеко за.
 
При навигации клавишей Tab, т.е. вопрос касается accessibility, необходимо элементам за пределами экрана удалять один класс, а когда они появляются то добавлять этот класс.  
При этом функция скажем isInViewport определена и работает, но не пойму как управлять только нужными элементами.  
 
Пример.

Код:
 
function isInViewport() {
// тут функция определяющая в пределах экрана или нет элемент
}
var elements = $("тут селектор, который имеют элементы, например, заканчивается на .element");
 
elements.each(function () {
  $(document).on('keydown', '.element', function () {
      $(this). // тут функция или операция для текущего элемента, т.е. тот что выделен клавишей Tab ;
})
})
 

Т.е.мне нужно при каждом нажатии клавиши Tab (когда будет при этом выделен следующий текущий элемент) проводить проверку в ф-ции isInViewport и определять все элементы за пределами и удалять класс.  
Подскажите, правильная ли логика и как реализовать, не могу до конца понять.

Всего записей: 2156 | Зарегистр. 18-06-2006 | Отправлено: 14:37 30-05-2025
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123

Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru