【发布时间】:2011-10-28 09:47:02
【问题描述】:
我在下面有一个 javascript 函数,可以从从数据库填充的多选框 A 移动到另一个多选框 B,如果发生回发,我在 B 中从 A 移过来的值丢失了。最初我认为是因为我为服务器端操作包含了一个“runat="server"”标签,但显然情况并非如此。我阅读了有关 Form.Request 的信息,但不知道如何去做。我只需要在多个选择框 B 中保留这些值。请多多指教。谢谢。
function move(sourceFrom, sourceTo) {
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;
}
for (ii = 0; ii < arrTo.length; ii++) {
var no = new Option();
no.value = arrLU[arrTo[ii]];
no.text = arrTo[ii];
sourceTo[ii] = no;
}
(sourceTo).focus();
if (sourceTo == (document.getElementById('<%= outletFromBox.ClientID%>'))) {
(sourceFrom).focus();
}
if (sourceTo == (document.getElementById('<%= QualMemTypeFromBox.ClientID %>'))) {
(sourceFrom).focus();
}
if (sourceTo == (document.getElementById('MemStatusFromBox'))) {
(sourceFrom).focus();
}
}
<select multiple size="8" style="width: 135px" runat="server" onblur="selectAll(this, true, document.getElementById('<%#uilblDestinationQualOutlet.ClientID%>'))"
id="outletToBox">
</select>
【问题讨论】:
标签: c# javascript asp.net html vb.net