2013-12-20 2 views
1

Я пытаюсь создать простую систему комментариев для стенных сообщений (например, facebook wall) , и я использую кнопку загрузки больше, чтобы показать еще 10 сообщений из базы данных каждый раз «показать больше». нажата кнопка ... и для каждого сообщения есть комментарий textarea, чтобы добавить комментарий Я использую «Enter keypress function».jQuery keypress event не сохраняется после вызова ajax

Событие Keypress работает по желанию перед вызовом ajax.

Когда пользователь активирует загрузку большего количества сообщений, событие keypress больше не функционирует, я проверил исходный код страницы, исходный текст, загруженный сообщениями, не найден на странице, но эти сообщения отображаются в браузере!

добавить комментарий функция:

$(function() { 
    $('.comment-form').keypress(function(event) { 
     if (((event.keyCode || event.which) == 13) && !event.shiftKey) { 
      // My ajax request here 
       } 
      }); 
    }); 

нагрузка больше функции:

$(function() { 
     //More Button 
     $('.more').live("click",function() { 
      var ID = $(this).attr("id"); 
      if(ID) { 
       $.ajax({ 
        type: "POST", 
        url: "{$url}/ajax.php", 
        data: "loadmore="+ ID, 
        cache: false, 
        success: function(html) { 
         $("#loadmore").append(html); 
        } 
       }); 
      } 
      return false; 
     }); 
    }); 

HTML:

 <div class="message"> 
     $Message 
     </div> 
     <div class="commenter"> 
     <textarea id="$id" class="comment-form" type="text" placeholder="Write comment..." maxlength="1000"></textarea> 
     </div> 

Я новичок, пожалуйста, помогите :)

+0

Для тестирования вы можете использовать Google Chrome? Если вы можете поместить внутри функции нажатия клавиш «отладчик»; в начале в окне «Инструменты для разработчиков». И проверьте, работает ли код после загрузки большего количества результатов. Если функция не будет работать, опубликуйте, какую ошибку вы получаете. И мы можем помочь вам больше. – Khamidulla

+0

Извините, что теперь я не использую отладчик :(, но приведенная выше ошибка появляется во всех браузерах. – MEDZ

+0

Я заметил, что в поле textarea не добавляются комментарии, пока пользователь не нажмет «добавить комментарий», если это это решение, пожалуйста, помогите мне сделать это. – MEDZ

ответ

1

Используй следующий код, чтобы иметь привязку событий нажатия клавиши для все будущей HTML наряду с текущей HTML в DOM -

$('.comment-form').on('keypress', (function(event) { 
    if (((event.keyCode || event.which) == 13) && !event.shiftKey) { 
     // My ajax request here 
    } 
})); 
+0

спасибо, но ваш код делает такая же ошибка выше :(и скобки в неправильной организации. – MEDZ

+0

вы пробовали с функцией jquery live, чтобы связать событие нажатия клавиши. –

+0

Работа в реальном времени работает yahoooo: D, большое спасибо Балачандре. – MEDZ

0

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

+0

Я приложил событие keypress для всех новых вызовов (загруженные сообщения), на этот раз Enter key заморожен и не работает даже не создает новые строки. – MEDZ