5 заметок с тегом

javascript

11 июня 2014, 20:02

Блокировки в

При создании практически любых веб-форм, необходимо позаботиться о том, чтобы пользователь, от скуки, не начал нажимать на отправку формы много раз, а сервис не получил несколько дубликатов одних и тех же данных.

Для этого можно пользоваться очень простой и короткой «библиотекой» (не уверен, что так можно назвать пять строк кода, но всё же):

(function() {
    var blocks = {};
    window.setBlock = function(name) { if (name in blocks) return false; return blocks[name] = true; }
    window.clearBlock = function(name) { delete blocks[name]; return true; }
})();



Как это действует:

  1. Функция setBlock() ставит блокировку по указанному коду. Если блокировки не было — возвращает true, если блокировка уже есть, возвращает false.
  2. Функция clearBlock() снимает блокировку по указанному коду.

Пример использования данных функций:

$('.my-submit').on('click', function() {
    if (setBlock('my-form-submit')) {
        // Устанавливаем блокировку в первый раз.
        // Тут можно ещё, например, выставить кнопке параметр disabled.

        // Отправляем нашу форму
        $.post('form-submit.php', function() {
            // Обрабатываем ответ формы, как это необходимо.

            // После обработки снимаем блокировку: теперь форму можно отправлять снова
            clearBlock('my-form-submit');
        }).fail(function() {
            // Эта функция будет выполнена, если произойдёт ошибка связи (скажем, у пользователя сломается интернет).
            // В таком случае нам важно снять блокировку, чтобы пользователь мог отправить форму снова,
            // 
11 июля 2013, 19:46

Meet jquery.prettyHelpBackground

В процессе разработки Pixoni я уже написал несколько кусков кода, которые спокойно можно выпускать в виде отдельных js-плагинов. Сегодняшний кандидат — небольшой плагин, который создаёт красивые блоки с подсказками в интерфейсе.

Василий нарисовал замечательные подсказки в интерфейсе Pixoni для тех пользователей, которые сталкиваются с ним впервые. Выглядят они вот так:

Подсказок таких в интерфейсе много и все они выглядят по-разному, поэтому хотелось вместо простой нарезки этих блоков на картинки получить более элегантное решение. Посидев пятнадцать минут с <canvas>-ом решение родилось в виде небо

6 июня 2013, 9:10

Глюк в Chrome с Flash-ба

В случае, когда у вас Flash-баннера на сайте в хроме загружаются «через раз» (хотя всё, вроде бы, корректно), вам поможет следующий код:

if (navigator.userAgent.match(/chrome/i)) {
	var objects = document.querySelectorAll("object");
	for (var i in objects)
		if (objects[i].parentNode)
			object

При создании объекта через google.maps.OverlayView или его дочку в браузере вы можете ловить события через jQuery в примерно таком виде:

$('.button').click(function() { ... }); // или .live('click', ...

(здесь предполагается, что .button находится в HTML-коде OverlayView)

В iPhone/iPod/iPad события обязательно нужно вешать чер

9 апреля 2013, 18:51

jQuery.readonly

Сделал маленький плагин к jQuery, который позволяет создавать поля «только для чтения».

Текст из таких полей можно копировать мышью и клавиатурой (доступны сочетания Ctrl+C, Ctrl+Ins и Ctrl+A для выделения), друг