2012-04-04 88 views
1

我正在構建表單。那裏沒問題。除了提交按鈕之外,我還有另一個按鈕,單擊它時會向表單中添加另一個字段。我正在嘗試使用JavaScript(jQuery)來做到這一點。不用說,我沒有任何運氣。 我已經嘗試了許多不同的方法,這是一個我放棄了在:將表單添加到表單(jQuery)

$("#snew").click(function() { 
var container = $("#sblc").add("div"); 
var content = "<select> <option>Domestic</option><option>Tiger</option><option>Peeled     Raw</option><option>Cooked Peeled Tail On<option></select><select> <option>1 lbs</option> <option>2 lbs</option><option>3 lbs</option></select>"; 

       $(container).attr("class", "opt"); 
       $(container).append(content); 
       $(container).appendTo("#sblc"); 

      }) 

這裏是對應的HTML: http://pastie.org/3729304 (我無法弄清楚如何讓HTML才能正常顯示)

每當我嘗試這個,我最終會得到一個完全白頁,或根本沒有任何反應。 任何幫助將不勝感激。

+2

你的問題可能出在這裏'變種容器= $(「#備用信用證」)添加(「格」);'然後你在jQuery中兩次包裝'container',不需要這麼做。 – elclanrs 2012-04-04 20:58:15

回答

0

嘗試類似下面,

DEMO

$("#snew").click(function() { 
    var container = $("<div />"); 
    var content = "<select> <option>Domestic</option><option>Tiger</option><option>Peeled     Raw</option><option>Cooked Peeled Tail On<option></select><select> <option>1 lbs</option> <option>2 lbs</option><option>3 lbs</option></select>"; 

    $(container) 
     .attr("class", "opt") //add class to the div container 
     .append(content)  //append select to the div 
     .appendTo("#sblc"); //append div to #sblc 

}); 
+0

我明白了。當它只需要一個引用時,我不斷引用該容器,並且通過第一行的邏輯,它已經被附加到最初的div(反正它不工作)。感謝您爲我清理! – 2012-04-04 21:21:37

0

我認爲你需要做的:

var container = $("<div>"); // notice the `<` and `>` 

這種方式,您可以創建新的DIV容器,後來append它(你已經這樣做了)

+0

我試過了,現在它刪除了表單中的所有內容。這是一個開始。這實際上是在做一些事情...... – 2012-04-04 21:01:07

0

大約只需調用一次追加什麼:

$("#sblc").append("<div class=\"opt\"><select><option>Domestic</option><option>Tiger</option><option>Peeled                  Raw</option><option>Cooked Peeled Tail On<option></select><select> <option>1 lbs</option><option>2 lbs</option><option>3 lbs</option></select></div>"); 
+0

謝謝,親切的先生! – 2012-04-04 21:03:33

0

這將與您提供的代碼工作:

$("#snew").click(function() { 
    var container = $("#sblc"); 
    var content = "<div><select> <option>Domestic</option><option>Tiger</option><option>Peeled     Raw</option><option>Cooked Peeled Tail On<option></select><select> <option>1 lbs</option> <option>2 lbs</option><option>3 lbs</option></select></div>"; 

    $(container).attr("class", "opt"); 
    $(container).append(content); 
}) 
+0

更好。再次謝謝你。 – 2012-04-04 21:07:18

0

你的邏輯似乎有點怪你首先聲明container$("#sblc").add("div"),它涉及一個包含#sblc和儘可能多的div的對象的jQuery集合,因爲它可以匹配。這真的是你想要做的嗎?
然後,你不需要在jQuery對象中包裝container
引起我不尋常的部分是$(container).appendTo("#sblc")。您正在追加雙重包裹container#slbc + divs#slbc ??不明白...
你可以嘗試這樣的事情:

$("#snew").click(function() { 

    var $container = # ('#slbc'), 
     materials = ['Domestic', 'Tiger', 'Peeled Raw', 'Cooked Peeled Tail On'], 
     values = ['1 lbs', '2 lbs', '3 lbs'], 
     html = '<select><option>' + materials.join('</option><option>') + '</option></select>' + 
      '<select><option>' + values.join('</option><option>') + '</option></select>'; 

    $container.append(html).addClass('opt'); 

});