2012-07-28 79 views
3

我需要创建一个像Ranker.com这样的表单,用户可以在其中创建列表。我的问题是我不能添加多个项目。在创建列表时创建类似于Ranker.com上的多个项目

我试过.clone().appendTo() divs,但是当他们创建新div时,我在'new item'输入中插入的标题重复,并且我有2-3个div,标题从第一个+其他文本开始。 Here is link to Jsfiddle.net

嘿家伙!我找到了解决这个问题的办法。请参阅jsfiddle.net

+2

嗨,欢迎来到StackOverflow!你能告诉我们你到目前为止所尝试过的吗?我们喜欢使用jsfiddle.net来展示示范:) – Undefined 2012-07-28 22:23:41

+0

谢谢萨姆,我会提供一个链接到jsfiddle.net。 – 2012-07-29 07:14:01

回答

1

由于克隆克隆了整个事物(文本框的值,名称,标识以及您可以想到的任何属性),您可能只想生成新的文本框而不是使用clone()。 生成一个新的文本框,您可以使用此代码:

var new_txt = $('<input>').attr({'type' : 'text'}); 

您可以用逗号分隔,每个属性指定多个属性输入:

$('<input>').attr({'type' : 'text', 'name' : 'something'}); 

为了达到你想要做什么你需要一个容器来添加新生成的文本框。

<div id="container"> 
    <input type="text" id="txt_item"/> 
</div> 

然后,只需使用实时()方法,以使每次用户按上生成一个新的文本框,一个文本框中输入:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script> 
$('input[type=text]').live('keydown', function(e){ 
    var new_txt = $('<input>').attr({'type' : 'text'}); 
    if(e.keyCode == 13){//If user press enter 
     new_txt.appendTo('#container').focus(); //append then focus to new textbox 
    } 
}); 
</script> 

正如你可以看到这是一个非常简单的例子,但你可以从这里拿走它。祝你好运!