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

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

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

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

Итак, есть поле ввода 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2012, 13:24
Ответы с готовыми решениями:

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

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

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

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

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

Помимо этого, что если: ?
  • Каждое такое поле "помнит", какое(-ие) значение и с каким результатом уже проверялось в прошлый раз (ранее вообще с момента загрузки страницы, или хотя бы последние N, если памяти жалко).
  • При потере фокуса сравнивать новое значение с тем(-и), что запомнено. Если действительно новое, то можно смело запрашивать.
1
307 / 20 / 4
Регистрация: 01.05.2010
Сообщений: 250
15.07.2012, 13:58  [ТС] 3
Цитата Сообщение от 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
15.07.2012, 13:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.07.2012, 13:58
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru