Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.12.2021, 08:01
Интересующийся
Отправить личное сообщение для Reken Посмотреть профиль Найти все сообщения от Reken
 
Регистрация: 05.05.2021
Сообщений: 15

Не выполняется захват по клавише enter
Подскажите пожалуйста:
Мне необходимо при помощи ajax захватывать значения при нажатии на клавишу enter.
В данный момент у меня есть скрипт, который подгружает содержимое php обработчика на страничку, с которой из любого input срабатывает захват по клавише enter.
Так же на подгружаемой страничке есть кнопка при нажатии на которую, обработчик php обновляет содержимое странички (опять же через ajax), и после обновления содержимого, клавиша enter перестает захватывать значения...
Привожу js скрипт.
<head>          
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>            
    </head>
    
    <div id="live_data"></div>
    
          <script>  
       $(document).ready(function(){
           
           
           
           
                             function setKeydownmyForm() {
	    $('input').keydown(function(e) {
	        if (e.keyCode === 13) {
                    
var tr = this.closest('tr');
           var lbo = $('.lbo', tr).val();
           
                               var tr = this.closest('tr');
           var credit_year_all = $('.credit_year_all', tr).val();
           
                               var tr = this.closest('tr');
           var credit_year_term = $('.credit_year_term', tr).val();
           
                               var tr = this.closest('tr');
           var debit_year_all = $('.debit_year_all', tr).val();
           
                               var tr = this.closest('tr');
           var debit_year_term = $('.debit_year_term', tr).val();
           
                               var tr = this.closest('tr');
           var fact_all = $('.fact_all', tr).val();
           
                               var tr = this.closest('tr');
           var fact_mounth = $('.fact_mounth', tr).val();
           
                               var tr = this.closest('tr');
           var kassa_all = $('.kassa_all', tr).val();
           
                               var tr = this.closest('tr');
           var kassa_mounth = $('.kassa_mounth', tr).val();
           
                               var tr = this.closest('tr');
           var credit_end_all = $('.credit_end_all', tr).val();
           
                               var tr = this.closest('tr');
           var credit_end_term = $('.credit_end_term', tr).val();
           
                               var tr = this.closest('tr');
           var debit_end_all = $('.debit_end_all', tr).val();
           
                               var tr = this.closest('tr');
           var debit_end_term = $('.debit_end_term', tr).val();
           
                                          var tr = this.closest('tr');
           var id = $('.id', tr).val();
           
                      $.ajax({  
                url:"/reporting/table/update",  
                method:"POST",  
                data:{ id:id, debit_end_term:debit_end_term, debit_end_all:debit_end_all, credit_end_term:credit_end_term, credit_end_all:credit_end_all, kassa_mounth:kassa_mounth, kassa_all:kassa_all, fact_mounth:fact_mounth, fact_all:fact_all, debit_year_term:debit_year_term, debit_year_all:debit_year_all, credit_year_term:credit_year_term, credit_year_all:credit_year_all, lbo:lbo },
                dataType:"text",  
                success:function(data)  
                {  
                     alert(data);
                     fetch_data();  
                }  


           })  
      } 

      })  

     }
           
           
    
    
    
    
                     function fetch_data()  
      {  
           $.ajax({  
                url:"/reporting/table/back",  
                method:"POST",  
                success:function(data){  
                     $('#live_data').html(data);  
                     setKeydownmyForm()
                     
                }   
           });  
      } 
     fetch_data(); 
     

     
                      $(document).on('click', '#btn1', function(){

       $.ajax({  
                url:"/reporting/table/back",  
                method:"POST",  
               
                data: $('#my-form').serialize(),
                dataType:"text",  
                success:function(data)  
                {  
                  $('#live_data').html(data);
                }  

           })

        })
     

           }); 
       
       </script>
Ответить с цитированием
  #2 (permalink)  
Старый 07.12.2021, 08:52
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 1,575

После обновления страницы в строке 109
$('#live_data').html(data);

Старые элементы пропадают, появляются новые, а обработчики событий к ним не привешиваются
Ответить с цитированием
  #3 (permalink)  
Старый 07.12.2021, 09:05
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,607

Reken, используй "делегирование событий"
https://learn.javascript.ru/event-delegation
Ответить с цитированием
  #4 (permalink)  
Старый 07.12.2021, 09:10
Интересующийся
Отправить личное сообщение для Reken Посмотреть профиль Найти все сообщения от Reken
 
Регистрация: 05.05.2021
Сообщений: 15

Спасибо что помогли разобраться, всё получилось
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При нажатии enter срабатывал :active Иван8718284019284759670 Элементы интерфейса 1 25.08.2017 04:08
сравнения кодов клавиш ctrl + enter и просто enter winch Events/DOM/Window 7 28.03.2017 14:34
Почему выполняется блок else? DivMan Общие вопросы Javascript 2 10.03.2016 14:11
Обход элементов формы по Enter myshara jQuery 14 20.10.2014 15:43
Как отделить нажатие кл. Enter в поле INPUT от нажатия Enter в выпадающем списке? Маэстро Events/DOM/Window 7 18.07.2012 09:11