2009-10-12 50 views
2

我對jQuery的知識不是很多,但我想要做的是允許用戶單擊表單上的按鈕,以向要提交的表單添加更多字段到表單本身...類似於gmail用於通過爲每個文件添加一堆輸入字段來處理電子郵件附件的方式,任何人都有關於如何執行該操作的一些指示?ASP.NET MVC使用jQuery的Ajax可擴展表單

回答

4

考慮,你希望把你的新領域與ID =「contentDiv」使用id =「buttonId」的按鈕和一個div:

$('#buttonId').click(
    function() { 
     $('<div>someinput, like textboxes ecc</div>') 
     .appendTo($('#contentDiv')); 
    } 
); 

有了這個語法,你可以在新的內容直接操作,如:

$('#buttonId').click(
    function() { 
     $('<div>someinput, like textboxes ecc</div>') 
     .hide() 
     .appendTo($('#contentDiv')) 
     .fadeIn('fast'); 
    } 
); 

因此,新內容淡入淡出而不是顯示。

+0

我忘記了appendTo,這看起來更清潔:) – 2009-10-12 17:44:46

+0

由於某種原因,這不工作在我的網頁上...語法是一樣的,頁面上沒有任何事情發生,所有內容都被正確地拉入,不知道爲什麼它有問題 – Jimmy 2009-10-12 18:16:52

+0

一定要匹配示例的所有ID(在標籤中寫入時沒有尖銳的「#」,但一定要把選擇器中的「#」)。然後,請確保您在選擇器中提供了正確的HTML內容。 – 2009-10-12 21:09:44

3

如果不爲您編寫所有代碼,請在表單中創建一個容器,如div。

<div id="morefields"></div> 

保持一個全局變量與字段的#

var fieldCount = 0; 

然後添加到該div

fieldCount++; 
var id = 'fieldname' + fieldCount; 
var fields = $("#morefields").html() + "<input id='" + id + "' name = '" + id + "' />"; 
$("#morefields").html(fields); 

有你的控制器功能接受的FormCollection作爲參數的HTML,閱讀領域。

希望有人會發佈一個更清潔的方式。這是我以前做過的。代碼可能無法編譯,從內存中編寫,但你得到的要點。

+0

下面的appendTo看起來更乾淨。 – 2009-10-12 17:44:15

+0

(+1)也許我只需要輸入如下名稱:name ='fieldname ['+ fieldCount']';所以ModelBinding可以用於控制器的動作。 – 2009-10-12 19:49:17

1

使用jQuery,

靜態表單數據

可以.show()和.hide()上的一個按鈕點擊一個DIV。這將讓你切換顯示你的額外信息DIV。

link

動態表單數據 使用.load(),您可以動態地從文件/服務器加載內容和使用的.html()將其添加到您的形式。

link

回寫有你想要的人做,如果你想,我會提供更多的信息。

+0

動態,因爲我不知道用戶想要添加多少項目 – Jimmy 2009-10-12 17:38:48