Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / В ajax сценарии не получается удалить элемент / 4 сообщений из 4, страница 1 из 1
18.08.2009, 14:10
    #36150078
Usik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ajax сценарии не получается удалить элемент
В общем ситуация такая , есть форма в которой одно поле-эдит и кнопка сабмит. По нажатию сабмита, данные передаются и проверяются php сценарием и тот в формате Json отвечает, мол правильные данные были введены или нет.

Если данные верные то все ок, если нет то ниже эдита должно писаться красным цветом:"Заполните поле" или еще что-нить. В общем если данные некорректны , то функция
Код: plaintext
create_notice(parent_id,type,elem_id,message)
создает в родительском элементе новый элемент и заполняет его соответствующим предупреждением.

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

Чтобы такого не было я вызываю передфункцией
Код: plaintext
create_notice(parent_id,type,elem_id,message)
функцию
Код: plaintext
delete_notice(id)
, которая удаляет (если есть) элемент с предупреждающей надписью (ищет его по id).

Вопрос, почему-то удалять никак не хочет. Что я не так сделал?


Код: plaintext
1.
2.
3.
4.
function CreateObject()
 {
 ....
 }
Возвращает объект XMLHTTPRequest.

Функция Create_notice вызывается если пользователь не заполнил поле формы. Ее задача в том чтобы ниже Эдита написать предупреждающее сообщение.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
function create_notice(parent_id,type,elem_id,message) 
{
    
    try
      { 
         var parent = document.getElementById(parent_id);
         var new_elem = document.createElement(type);
         new_elem.id=elem_id;
         new_elem.style.color='red';
         var text=message;
         var textNode = document.createTextNode(text);
         parent.appendChild(new_elem);
         new_elem.appendChild(textNode); 
     }   
 catch(e)	
      {
 
      };
}
Функция delete_notice
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function delete_notice(id)
 {
   try
   {
        document.getElementById(id).parentNode.removeChild(id);
   } 
  catch(e)	
   {
     alert(id);
   }
 } 

Вот взаимосвязь этих функций
Код: plaintext
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.
//------------------------------------------------------------------
var http = createObject();
//------------------------------------------------------------------

 function login()
  {
    var email = encodeURI(document.getElementById('id_email').value);
    var nocache= Math.random();
    http.open('get', 'login.php?email='+email+'&nocache' = +nocache,true);
    http.onreadystatechange = loginReply;
    http.send(null);
  }
//--------------------------------------------------------------------
function loginReply()
  {
     var response;
     
    if ( http.readyState ==  4  ) 
      {
       if ( http.status ==  200  ) 
         {  
           response = http.responseText; 
           var data=eval( "(" + response + ")" );
          //----------------------------------
           delete_notice('email_notice'); 
           if  (data.email_notempty==null)//Ответ от php-сценария (JSON) 
              create_notice('email_td','font','email_notice','Заполните поле E-mail.') ;
          //----------------------------------			   
          http = null;     
          http = createObject();
       }         
       else 
         alert( "There was a problem with the URL." );
        }
   };

...
Рейтинг: 0 / 0
18.08.2009, 15:42
    #36150388
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ajax сценарии не получается удалить элемент
Блин, как же все сложно ... если ты дорос уже до более-менее серьезных проектов, то надо заставлять себя экономить свое время и место кода - юзать фреймворки.
Весь твой приведенный код на jQuery поместится в 3-4 строчки, да к тому же совершенно кроссбраузерно и без трай-кетчей, к тому же, добавив символов 20, можно скрытие надписей анимировать.
Ошибки не вижу, хотя понимаю и чувствую, что она в функции delete_notice, но настоятельно советую прислушаться к совету использовать фреймворк.
...
Рейтинг: 0 / 0
18.08.2009, 15:46
    #36150403
Usik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ajax сценарии не получается удалить элемент
Так стоп, что мне там изучить то надо , Jquery+Ajax, так?
...
Рейтинг: 0 / 0
18.08.2009, 16:03
    #36150472
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ajax сценарии не получается удалить элемент
Да "там" все так просто, что и изучать-то особо не надо - подключай и пользуйся ...
ajax очень плотно "инкапсулирован" в jQuery, так что в отдельную тему не стоит выделять.
Удобно пользоваться "родным" сайтом jQuery , но есть очень хороший перевод с комментариями.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / В ajax сценарии не получается удалить элемент / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]