2013-12-12 40 views
1

所以我有这个场景jQuery:将输入密切连接到一个动态创建的输入

当我加载窗体时,我最初有一个输入类型的文本。

如果用户输入的字符超过5个字符,则在输入元素之后注入新的输入文本,并从当前元素解除绑定事件。

HTML:

<form> 
    <input id="input1" type="text" class="email-input" /> 
</form> 

JQUERY:

$('.email-input').on({ 

    keyup: function() { 
     if (this.value.length > 5) 
     { 
      var newInput = $("<input type='text' class='email-input' />"); 
      $('form').append(newInput); 

      $(this).unbind('keyup'); 
     } 
    } 

}); 

我想新创建的元素具有相同的功能最初创建的元素。我如何实现这一目标?

+0

随着委派的活动:http://api.jquery.com/on/ – Tallmaris

回答

4

代表活动的形式:

DEMO

$('form').on({  
    keyup: function() { 
     if($(this).data('unbind')) return; 
     if (this.value.length > 5) 
     { 
      var newInput = $("<input type='text' class='email-input' />"); 
      $('form').append(newInput); 
      //used to filter event, you cannot unbind here delegated event just for specific element 
      $(this).data('unbind',true); 
     } 
    } 

},'.email-input'); 
+0

谢谢,这正是我一直在寻找。 –

-1

试试这个

$( '电子邮件输入。 ')生活(' KEYUP',函数(){

//enter code here 

});

+0

从DOC:截至jQuery 1.7,.live()方法已被弃用。使用.on()附加事件处理程序。老版本的jQuery用户应优先使用.delegate(),而不要使用.live()。 – Tallmaris

3

你可以用这个语法做到这一点:

$(document).on('keyup', '.email-input', function() { 
    // code 
}); 

例如这里:http://jsfiddle.net/922Yj/

或委托它的形式(而不是文件)上,就像前面的回答说。