Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Проблема с выводом (https://javascript.ru/forum/jquery/46866-problema-s-vyvodom.html)

Khalilbeg 27.04.2014 16:53

Проблема с выводом
 
Добрый день.
Пытаюсь при вызове события oninput вывести в блок output определенные данные. Alert работает нормально, то есть событие само вызывается. И отдельно вывод в этот блок тоже работает. А вот при вызове события данные не заносятся.
Вот код:
<div class="live_search">
    <p>Номер 1</p>
    <input type="text" autocomplete="off">
    <div class="output"></div>
</div>
<br>
<div class="live_search">
    <p>Номер 2</p>
    <input type="text" autocomplete="off">
    <div class="output"></div>
</div>

$(document).ready(function(){
    var live_search = $('.live_search');
    for(var element in live_search){      
        $(element).find('input').on('input',function(){
            $(element).find('.output').text('Что то ввели в поле ввода.');
            alert('Произошло событие oninput.'); 
        });   
        $(element).find('.output').text('Проверка вывода в блок #output.');
    }
});

рони 27.04.2014 17:29

Khalilbeg,
:cray: учите доку- пока не выучили неиспользуйте for в jquery - а лучше воспользуйтесь each;

<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
   $(function ()
{
    var live_search = $('.live_search');
    live_search.each(function(indx, element){
         $('input', element).on('input',function(){
            $('.output', element).text('Что то ввели в поле ввода.');
            alert('Произошло событие oninput.');
        });
         $('.output', element).text('Проверка вывода в блок #output.')
          });
})
  </script>
</head>

<body>
<div class="live_search">
    <p>Номер 1</p>
    <input type="text" autocomplete="off">
    <div class="output"></div>
</div>
<br>
<div class="live_search">
    <p>Номер 2</p>
    <input type="text" autocomplete="off">
    <div class="output"></div>
</div>
</body>
</html>

Khalilbeg 27.04.2014 18:48

Спасибо большое :) . Не думал что jquery своеобразно реализовывает for.

рони 27.04.2014 19:01

Цитата:

Сообщение от Khalilbeg
Не думал что jquery своеобразно реализовывает for.

это не jquery а вы пытаитесь использовать 1 переменную под все элементы и удивляитесь почему это неработает.
чему будет равен var element когда закончится цикл for
по теме помедитируйте тут
http://javascript.ru/basic/closure#p...-ispolzovaniya
each как раз позволяет незадумываться о сохранении контекста

Khalilbeg 27.04.2014 20:05

Спасибо еще раз. Но в обычном (не веб) программировании подобной проблемы нет, поэтому об этом даже не задумывался.


Часовой пояс GMT +3, время: 02:51.