在JavaScript中存储隐藏字段值。
但是当点击下一页隐藏字段为空时,它没有来自上一页的值。
为什么不在下一页加载以前的值?
如何在隐藏字段中加载以前的值??
function AddRemoveCustomer(id) {
//$(".checkBoxClass").click(function (e) {
alert('in main function');
alert(id);
var CustomerIDArray = [];
var hidCID = document.getElementById("hfCustomerID");
if (hidCID != null && hidCID != 'undefined') {
var CustID = hidCID.value;
CustomerIDArray = CustID.split("|");
var currentCheckboxValue = id;
var index = CustomerIDArray.indexOf(currentCheckboxValue);
alert('index value:' + index);
debugger;
if (index == 0) {
alert('if');
CustomerIDArray.push(currentCheckboxValue);
alert('pushed value:' + CustomerIDArray);
} else {
alert('else');
var a = CustomerIDArray.splice(index, 1);
alert("a" + a);
}
hidCID.value = CustomerIDArray.join("|");
alert('Final' + hidCID.value);
} else {
alert('undefined');
}
//});
}
<table id="tblEmailScheduler" class="table-bordered col-offset-12">
<thead>
<tr class="label-primary">
<th style="padding:5px 15px;">
First Name
</th>
<th style="padding:5px 15px;">
Last Name
</th>
<th style="padding:5px 15px;">
Email ID
</th>
<th style="padding:5px 15px;">
Customer Type
</th>
<th style="padding:5px 15px;">
Customer Designation @Html.DropDownList("CustomerDesignation", new SelectList(ViewBag.SelectAllCustomerDesignationDDL, "Value", "Text"), new { id = "CustomerDesignationDDL" , name = "CustomerDesignationDDL" })
</th>
<th style="padding:5px 15px;">
Select All
<div class="checkbox control-group">
<label><input type="checkbox" id="cbSelectAll" /></label>
</div>
</th>
</tr>
</thead>
<tfoot>
<tr>
<th colspan="2">
EmailTemplate : @Html.DropDownList("EmailSubject", new SelectList(ViewBag.SelectAllEmailTemplateDDL, "Value", "Text"), new { id = "SelectAllEmailTemplateDDL" })
</th>
<th colspan="2">
Set Date And Time:
<input type="text" class="from-date-picker" readonly="readonly" />
</th>
<th colspan="2">
<input type="submit" value="Schedule" id="btnSubmit" class="btn btn-default" />
</th>
<td>
</td>
</tr>
</tfoot>
@foreach (var item in Model) {
<tr style="text-align:center">
<td id="tblFirstName">
@item.FirstName
</td>
<td id="tblLastName">
@item.LastName
</td>
<td id="tblEmailID">
@item.EmailID
</td>
<td id="tblCustomerType">
@item.CustomerType
</td>
<td id="tblCustomerDesignation">
@item.CustomerDesignation
</td>
<td>
<div class="checkbox control-group">
<label><input type="checkbox" id="@item.CustomerID" value="@item.CustomerID"
onclick="AddRemoveCustomer(@item.CustomerID)" class="checkBoxClass"/>
@*@Html.CheckBox("Select", new { id = "cbCustomer", item.CustomerID})*@</label>
</div>
</td>
</tr>
}
</table>
<input type="hidden" id="hfCustomerID" />
答案 0 :(得分:0)
在查看您的代码时,我发现了一个可能导致您指出问题的问题:
var index = CustomerIDArray.indexOf(currentCheckboxValue);
然后使用index来判断Id是否在数组中,通过这样做:
if (index == 0) {
应该是
if (index == -1) {
表示未找到-1。有了它,就像现在一样,它会触及这一行:
var a = CustomerIDArray.splice(index, 1);
并尝试拼接一个负数索引,它从字符串的末尾开始向后移动,这会产生意想不到的结果。
答案 1 :(得分:0)
您隐藏的hfCustomerID
字段始终会以空字段的形式呈现给浏览器,因为您尚未将其绑定到Model
中的任何内容。
我认为这张表位于发布到控制器的表格中?如果是这样,那么您可以向模型添加新字段,然后使用@Html.HiddenFor
呈现隐藏的输入字段,该字段绑定到模型中的该项目。
或者,看起来这个字段完全是根据勾选的复选框计算的?在这种情况下,更新您的视图以设置隐藏字段的值(这将从您的JavaScript复制一些逻辑)。