2012-07-28 66 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> 

正如你可以看到這是一個非常簡單的例子,但你可以從這裏拿走它。祝你好運!