Adding a field to a form (jQuery)

2019-06-04 04:47发布

I'm constructing a form. No problem there. Aside of a submit button, I have another button that, when clicked, adds another field to the form. I am attempting to use javascript (jquery) to do this. Needless to say I am not having any luck. I have tried many different methods, and this is the one I gave up at:

$("#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"); 

            })

Here is the HTML that corresponds: http://pastie.org/3729304 (I couldn't figure out how to get the HTML to display properly on here. Sorry for the link. )

Whenever I try this, I end up either getting a completely white page, or nothing happens at all. Any help would be greatly appreciated.

6条回答
【Aperson】
2楼-- · 2019-06-04 04:57

Try something like below,

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

});
查看更多
孤傲高冷的网名
3楼-- · 2019-06-04 04:57

I think you need to do:

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

This way, you create new DIV container and append it later (you've already done this)

查看更多
萌系小妹纸
4楼-- · 2019-06-04 05:01

You have an error with how your appending.

http://jsfiddle.net/NYnYw/

查看更多
【Aperson】
5楼-- · 2019-06-04 05:17

This will work with the code you provided:

$("#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);
})
查看更多
闹够了就滚
6楼-- · 2019-06-04 05:17

What about simply calling append once:

    $("#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>");
查看更多
beautiful°
7楼-- · 2019-06-04 05:18

Your logic seems weird... You first declare container as $("#sblc").add("div") which refers to a jQuery collection of objects that includes both #sblc and as many div as it can match. Is this really what you're trying to do?
Then, you double wrap container in jQuery object which is unnecesary.
The part that strikes me as unusual is $(container).appendTo("#sblc"). You're appending the double wrapped container, or #slbc + divs to #slbc?? Don't understand...
You could try something like this:

$("#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');

});
查看更多
登录 后发表回答