我有2间移动项目选择多箱,当我从源选择框目的地选择框移动项目的JavaScript函数,我的价值添加到我的HiddenField让我能在代码访问的背后,工作正常,但当我从目的地选择框回源选择框移到项目(S),我尝试使用:hidMemType.value =“”;清除隐藏区域。我认为这有效,但显然在发生回发时,该项目仍然卡在目的地框中。请指教,谢谢。HiddenField值不会被删除
// Move items to and fro select box
function move(sourceFrom, sourceTo) {
var hidOutlet = document.getElementById('<%=hdnOutlet.ClientID%>');
var hidMemType = document.getElementById('<%=hdnMemType.ClientID%>');
var hidMemStatus = document.getElementById('<%=hdnMemStatus.ClientID%>');
var arrFrom = new Array();
var arrTo = new Array();
var arrLU = new Array();
var i;
for (i = 0; i < sourceTo.options.length; i++) {
arrLU[sourceTo.options[i].text] = sourceTo.options[i].value;
arrTo[i] = sourceTo.options[i].text;
}
var fLength = 0;
var tLength = arrTo.length;
for (i = 0; i < sourceFrom.options.length; i++) {
arrLU[sourceFrom.options[i].text] = sourceFrom.options[i].value;
if (sourceFrom.options[i].selected && sourceFrom.options[i].value != "") {
arrTo[tLength] = sourceFrom.options[i].text;
tLength++;
} else {
arrFrom[fLength] = sourceFrom.options[i].text;
fLength++;
}
}
sourceFrom.length = 0;
sourceTo.length = 0;
var ii;
for(ii = 0; ii < arrFrom.length; ii++)
{
var no = new Option();
no.value = arrLU[arrFrom[ii]];
no.text = arrFrom[ii];
sourceFrom[ii] = no; // SENDS VALUE FROM DESTINATION BOX BACK TO SOURCE BOX
hidMemType.value = ""; // TRY TO CLEAR MY HIDDEN FIELD HERE
}
for (ii = 0; ii < arrTo.length; ii++) {
var no = new Option();
no.value = arrLU[arrTo[ii]];
no.text = arrTo[ii];
//sourceTo.options.add(no);
sourceTo[ii] = no;
if (sourceTo == (document.getElementById('<%=outletToBox.ClientID%>'))) {
hidOutlet.value += no.value + "|";
}
if (sourceTo == (document.getElementById('<%=QualMemTypeToBox.ClientID%>'))) {
hidMemType.value += no.value + "|";
}
if (sourceTo == (document.getElementById('<%=MemStatusToBox.ClientID%>'))) {
hidMemStatus.value += no.value + "|";
}
}
(sourceTo).focus();
if (sourceTo == (document.getElementById('<%= outletFromBox.ClientID%>'))) {
(sourceFrom).focus();
}
if (sourceTo == (document.getElementById('<%= QualMemTypeFromBox.ClientID %>'))) {
(sourceFrom).focus();
}
if (sourceTo == (document.getElementById('<%= MemStatusFromBox.ClientID %>'))) {
(sourceFrom).focus();
}
}
代码背后:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
PopulateSelectBoxes(hdnMemType, QualMemTypeToBox, QualMemTypeFromBox)
end Sub
Protected Sub PopulateSelectBoxes(ByVal hdnSelectBox As HiddenField, ByVal selectBox As HtmlSelect, ByVal selectBox_Frm As HtmlSelect)
Dim hiddenMemType(selectBox.Items.Count - 1) As String
hiddenMemType = (Split(hdnSelectBox.Value, "|"))
Dim tempTable As String = ""
For Each item In hiddenMemType
If (tempTable.IndexOf(item) = -1) Then
If item <> "" Then
tempTable += item + "|"
End If
End If
Next
If tempTable <> "" Then
hiddenMemType = (Split(tempTable, "|"))
'We remove the items that exist in the ToBox
For Each item In hiddenMemType
selectBox_Frm.Items.Remove(item)
Next
selectBox.Items.Clear()
selectBox.DataSource = hiddenMemType
selectBox.DataBind()
End If
End Sub