2013-06-30 4 views
1

Я пытаюсь динамически создавать текстовые поля ввода. Используя jquery, я могу создавать поля ввода, но всякий раз, когда пользователь пытается щелкнуть по любому из динамически создаваемых полей, его указатель автоматически перемещается в первое поле. Теперь, используя только ключ TAB, он может перейти к определенному полю и ввести данные.Странное поведение динамически созданных полей ввода

Here является скрипкой, чтобы испытать то, с чем я столкнулся.

А вот код

HTML

<head>  
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
     <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js"></script> 
</head> 

<body> 

<label><div id= "div1"><input class="address" id="friend1" type="text"></div></label>  
<div id='wrapper2'><div id="button2" class='removebutton'>Remove</div><div id="button">Add!</div></div>   
<div id="submit-button" >GO!</div> 
    </body> 

JS

$(document).ready(function() 
{ 
      var friends_cnt = 1; 

    $('#wrapper2').on('click','#button',function() 
         {     
          clicknum = 0; 
          if (friends_cnt < 11) 
          { 
           $('<div id = div'+(friends_cnt+1)+'><input type="text" class="address" id="friend' + (friends_cnt+1) + '"></div>').insertAfter('#div'+friends_cnt);   
           $(function() { 
           $("#friend"+(friends_cnt+1)).autocomplete({ 
            source: function(request, response) { 
            geocoder.geocode({'address': request.term }, function(results, status) { 
             response($.map(results, function(item) { 
             return { 
              label: item.formatted_address, 
              value: item.formatted_address, 
              latitude: item.geometry.location.lat(), 
              longitude: item.geometry.location.lng() 
             } 
             })); 
            }) 
            }, 
           }); 
           });  
          friends_cnt++; 
          } 
          else 
          { 

          } 

         }); 



         $('#button2').click(function() 
         {      
          clicknum = 0; 
          if(friends_cnt > 1) 
          { 
           $('#friend'+friends_cnt).remove(); 
           $('#div'+friends_cnt).remove(); 
           friends_cnt--; 
          }  

         }); 

}); 

ответ

2

Причина в том, HTML вопрос. Я переехал label закрывающий тег так:

<div id= "div1"><label></label><input class="address" id="friend1" type="text" /></div> 

и теперь указатель не прыгает, смотрите:

http://jsfiddle.net/g84t4/4/

+0

может у объяснить мне, что случилось? Как этикетка вызывает это? – user1263375

+0

@ user1263375 вот что я нашел на w2schools: * Элемент '

Смежные вопросы