【发布时间】:2017-02-21 19:29:21
【问题描述】:
我有一个表单,其中有一个部分供用户添加多个约会日期。表单的这一部分包含以下字段:开始日期、结束日期和添加按钮。
<form action="/someaction">
Start Date <input type="text" id="StartDate" name="StartDate"><br>
End Date: <input type="text" id="EndDate" name="EndDate"><br>
<a class="btn btn-default js-add" href="#" role="button">Add</a>
<table class="table" >
<tbody id="dates" >
</tbody>
</table>
// Other form fields
<input type="submit" value="Submit">
</form>
每次用户添加约会时,我都想将值存储在 JavaScript 对象数组中,并显示数组中的项目数以及添加的对象的详细信息,并提供将其从列表中删除的选项。以下是我的初步尝试:
<script>
var appointments = [];
$(".js-add").click(function (e) {
e.preventDefault();
var startDate = $("#StartDate").val();
var endDate = ("#EndDate").val()
// What can I use to uniquely identify each object incase we need to delete???
appointments.push( { startDate: startDate , endDate: endDate });
$('<tr/>', { html: '<td >' + startDate + '</td><td>' + endDate + '</td><td><a class="js-delete" href="" data-id="">delete</a></td>'})
.appendTo($('#dates'));
}
$(".js-delete").click(function (e) {
e.preventDefault();
var id = $(this).attr("data-id");
// How do I remove the selected object from the array???
// appointments.splice(x,1);
}
</script>
如何使用数组索引从数组中删除对象。我在删除链接上有一个 data-id 属性,它将包含数组索引。
但是每次添加或删除对象时,数组索引都会发生变化,那么如何更新现有行的 data-id 属性?
其次,我如何将此对象传递回服务器,因为它没有附加到任何表单输入字段?
我们将不胜感激?
【问题讨论】:
-
您可以一次尝试一个问题。至于 #2,通常您为要发布到操作的内容创建一个隐藏输入。
-
绝对尝试将其限制为一个问题。 1:
data-id属性最初来自哪里?最初是如何设置的?您在创建约会时是否有权访问该 ID? 2:AJAX。用起来舒服,你会经常使用它。 -
@Crowcoder 类似
$hidInput.val(JSON.stringify(appointments)); -
@Mike 它来自以下链接
<a class="js-delete" href="" data-id="">delete</a>,该链接是在向数组添加新指定时创建的。我没有用任何东西填充它,因为我不确定我可以使用什么作为唯一标识符。我无法通过 ajax 添加项目,因为约会是子关系的一部分。只有在创建父记录后才能添加它们。 -
@adam78 我的意思是您可以通过 AJAX 提交整个表单。隐藏输入也可以,完全由您来决定。至于 ID,它是否曾经被赋值过?如果是这样,怎么做?您显示的代码创建了属性,但没有给它一个唯一的值。
标签: javascript c# arrays javascript-objects