0

我有一个表格,我需要附加两个不在表格范围内的项目。我正在使用 jQuery 来做到这一点。

我的代码正在运行,但是,第二次提交表单时,我得到了第一次选择的值。

这是我的代码:

<script type="text/javascript">
    $(document).ready(function () {
        $("#btnUpdate").click(function (event) {

            var items = [];

            $('#params :selected').each(function (i, selected) {
                items[i] = $(selected).text();
                $(selected).prop("selected", false)
            });

            //So far, so good. My variable 'items' changes the second time.

            //The problem is here:

            for (var i = 0; i < items.length; i++) {

                var submitVal = items[i];
                $('#myForm').append("<input type='hidden' name='param" + i + "' value='" + submitVal + "' />");
            }

            return true;
        });
    });

</script>

我想我第二次附加第三个和第四个参数,这意味着我param0, param1- 从第一次开始 - 并且param0, param1再次 - 从第二次开始。

在第三次我将附加第五和第六等等。

在服务器端,我使用的是 ASP.NET MVC。

public ActionResult Method(string param0 = "", string param1 = "")

我尝试使用该方法.submit但没有成功,这就是我使用该.click方法的原因。

现在我正在尝试附加这两个参数,提交表单,然后删除它们。

关于如何进行的任何想法?或者有更好的解决方案的想法?

4

2 回答 2

1

假设您的表单中没有任何其他隐藏输入,您可以尝试在添加新项目之前将它们全部删除:

$('#myForm').find('input[type=hidden]').remove(); //remove all hidden elements

for (var i = 0; i < items.length; i++) {
    var submitVal = items[i];
    $('#myForm').append("<input type='hidden' name='param" + i + "' value='" + submitVal + "' />");
}

如果您有其他隐藏元素,请使用相同的类标记这些动态元素并使用它来选择要删除的元素:

$('#myForm').find('input[type=hidden].dynamic').remove(); //remove all hidden elements tagged with dynamic class

for (var i = 0; i < items.length; i++) {
    var submitVal = items[i];
    $('#myForm').append("<input class='dynamic' type='hidden' name='param" + i + "' value='" + submitVal + "' />");
}
于 2013-08-12T14:15:41.710 回答
1

我会花更多的精力让它与提交事件一起使用,因为用户不一定需要单击按钮来提交表单。

但无论如何,我会给动态添加的输入一个特殊的类,并在页面加载时使用它来删除它们:

$('#myForm').append("<input type='hidden' class='dynamically-added' name='param" + i + "' value='" + submitVal + "' />");

...

$(document).ready(function () {
    $('input.dynamically-added').remove();
});
于 2013-08-12T14:15:53.650 回答