Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для AK3RN
307 / 20 / 4
Регистрация: 01.05.2010
Сообщений: 250

Замена одного события другим

15.07.2012, 13:24. Показов 1735. Ответов 2
Метки ajax (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу прощения за нелепый заголовок темы: просто не знаю, как сформулировать.

Итак, есть поле ввода input, содержимое которого по событию blur отправляем на сервер и там проверяем. Сервер возвращает либо ошибку, либо пустую строку(знак того, что все ОК). И все это дело выводится во всплывающей подсказке в углу экрана. Проблема следующая - если ошибок при вводе нет, то хочется как бы запретить событие blur и поставить на это поле событие change(во избежание лишних кликов при правильном заполнении поля и, соответственно, лишних запросов к серверу). Когда же содержимое поля изменится, то снова вернуть blur и отменить change

Возникает вопрос - а нафиг нужен blur, если можно поставить сразу change и не париться? Объясняю: место на экране не так много, вмещается где-то около 5-6 всплывающих подсказок. И при событии change с каждой введенной буквой будет появляться новая подсказка и все место в итоге забьется.

Написано сумбурно, поэтому еще раз, по пунктам, что нужно:
  1. Получить от юзера текст
  2. Если есть ошибки, то вопросов нет - выводим сообщения об ошибке
  3. Если ошибок нет - то снимаем событие blur до тех пор, пока содержимое input'а не изменится
Прошу пояснить, как мне это провернуть. Пока что-то в голову не приходит.

Сам код:
JavaScript
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
$('#username').bind("blur",function() {
        var formData = {//формируем массив данных
            "username":$('#username').val()
        };
 
        $.ajax({//отправляем данные аяксом
            url:'checkuser',
            type:'POST',
            data:'jsonData=' + $.toJSON(formData),
            success: function(res) {
                if(res=='')//если все ок
                {
                    $("#error_username").html("✔");
                    showNotice("Username ok", "");//вот после этой строчки нужно как-то заменить blur 
//на change
                }
                else//если есть ошибки
                {
                    $("#error_username").html("✖");
                    showNotice("Username error", res);
                }
            }
        });
 
    });
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.07.2012, 13:24
Ответы с готовыми решениями:

Замена одного класса другим по нажатию на кнопку
Всем привет. Я новичок в JS, нужна помощь знающих. Собственно задача такая - нужно чтобы при нажатии на одну из кнопок, добавлялся ее...

Замена одного текста другим: в какой-то момент текст перестает меняться
$('.carousel-block').click(function(){ $('#phone').text(''); var id = $(this).attr("id"); var phone = $("#phone").text(); ...

Перепись одного блока текста другим
В блоке с id="words" выберите текст hello world и добавьте его в блок с id="insert" в <span> вместо строки "abracadabra" вот...

2
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
15.07.2012, 13:41
Цитата Сообщение от AK3RN Посмотреть сообщение
И при событии change с каждой введенной буквой будет появляться новая подсказка
У текстовых полей onchange срабатывает как раз при уходе фокуса, если текст был изменен. Так что это самое оно.

Помимо этого, что если: ?
  • Каждое такое поле "помнит", какое(-ие) значение и с каким результатом уже проверялось в прошлый раз (ранее вообще с момента загрузки страницы, или хотя бы последние N, если памяти жалко).
  • При потере фокуса сравнивать новое значение с тем(-и), что запомнено. Если действительно новое, то можно смело запрашивать.
1
 Аватар для AK3RN
307 / 20 / 4
Регистрация: 01.05.2010
Сообщений: 250
15.07.2012, 13:58  [ТС]
Цитата Сообщение от Vovan-VE Посмотреть сообщение
При потере фокуса сравнивать новое значение с тем(-и), что запомнено. Если действительно новое, то можно смело запрашивать.[/list]
Спасибо огромное, сделал так:
JavaScript
1
2
3
4
5
6
7
8
var prev='';//предыдущее
var pres='';//текущее
...
prev=pres;
pres=$('#username').val();
 
if(prev!=pres)//отправляем запрос серверу
{...}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.07.2012, 13:58
Помогаю со студенческими работами здесь

Заменить пиксель одного цвета другим цветом
Есть задумка, есть изображение на белом фоне какая то фигура красного цвета, надо определенное количество пикселей (переменное число)...

Отталкивание одного объекта другим
Добрый день. Помогите пожалуйста. Есть один объект (круг) который движется сверху вниз. При достижении края другого объекта он должен...

Замена одного символа другим
Допустим есть у меня текст "12345#6" Нужно заменить # на нужный мне символ как такое сделать? Djadkajar, а теперь по подробней...

Замена одного файла другим
Как написать батник, чтобы заменял файл из одной папки в другую? В общем у меня на рабочем столе есть файл 1.txt , а в другой папке...

Замена одного слова другим в строке
Здравствуйте, помогите плз в решении задачи (срочно!!) Суть задачи состоит в том, что мы должны ввести с клавиатуры строку, потом ввести...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru