创建jquery对象数组并在表单提交上发布其值

时间:2011-10-05 12:20:35

标签: c# jquery asp.net-mvc-3

我以动态方式添加了html元素(选择列表):

//Dynamicly adding selectlist elements
function newshit() {
    i = i + 1
    $("#mytable").append("<tr><td><div id='div" + i + "'><select id='elem" + i + "' name='elem" + i + "' class='ted'></select><input type='button' value='-' id='buttonminus" + i + "' style='width:5%;' onclick='removeelem(elem" + i + ",buttonminus" + i + "," + i + ")'/></div></td></tr>")
    getitems("elem" + i)
}

//filling lists
function getitems(item) {
    $.getJSON('@Url.Content("~/Stok/Items/")', {}, function (data) {
        $.each(data, function (i, c) {
            $("#" + item).append("<option value='" + c.Value + "' title='" + c.Text + "' label='" + c.Text + "'>" + c.Text + "</option>")
        })
    })
}

//removing element, when button next to it used
function removeelem(elem,buttonminus,i) {
    if ($("select").length > 1) {
        $("#div" + i).closest('tr').empty().remove()
    } else if ($("select").length <= 1) {
        alert("At least 1 of items must be chosen to create a group!")
    }
}

//checking elements and values existence
function check() {
    var slcts = $("select").serialize();
    alert(slcts)
}

我试图获取每个选择列表的选定选项值的值,并将它们放入一个数组,而不是在表单提交时将它们发送到我的控制器。

我怎么能做到这一点?

2 个答案:

答案 0 :(得分:2)

需要检查一下,但我认为以下情况应该有效:

  1. 更改您的代码,以便您的ID格式如下:

    ID = “ELEM [0]”

  2. 然后,如果你的控制器有这样的签名:

    public ActionResult Something(IEnumerable<string> elem)
    {
    
    }
    

    然后他应该“正常工作”。

答案 1 :(得分:1)

您可以使用类似 -

的内容
var selectdata = $("select").serialize()

这将返回<select name attribute1>=<chosen value1>&<select name attribute2>=<chosen value2>等格式的字符串。您需要在创建选择HTML时为其添加'name'属性。

演示 - http://jsfiddle.net/ipr101/fZXha/

然后,您可以在发布表单之前将selectdata变量放在隐藏字段中,或使用ajaxpost方法通过AJAX发送它。