谁能帮帮我?一个下拉列表框的问题.

hafeng58 2006-01-16 04:35:25
请看下面代码:
问题是提交表单后如何获得列表框jobarea[]的数据.
<SCRIPT language=JavaScript>
function GetObjID(ObjName)
{
for (var ObjID=0; ObjID < window.powersearch.elements.length; ObjID++)
if ( window.powersearch.elements[ObjID].name == ObjName )
{ return(ObjID);
break;
}
return(-1);
}
function AddItem(ObjName, DesName, CatName)
{
//GET OBJECT ID AND DESTINATION OBJECT
ObjID = GetObjID(ObjName);
DesObjID = GetObjID(DesName);
// window.alert(document.powersearch.elements[DesObjID].length);
k=0;
i = document.powersearch.elements[ObjID].options.length;
if (i==0)
return;
maxselected=0
for (h=0; h<i; h++)
if (document.powersearch.elements[ObjID].options[h].selected ) {
k=k+1;
maxselected=h+1;
}
if (maxselected>=i)
maxselected=0;
if ( document.powersearch.elements[DesObjID].length + k >5 ) {
window.alert("最多可选择5条");
return;
}

if (CatName != "")
CatObjID = GetObjID(CatName);
else
CatObjID = 0;
if ( ObjID != -1 && DesObjID != -1 && CatObjID != -1 )
{ jj = document.powersearch.elements[CatObjID].selectedIndex;
if ( CatName != "")
{ CatValue = document.powersearch.elements[CatObjID].options[jj].text;
CatCode = document.powersearch.elements[CatObjID].options[jj].value;
}
else
CatValue = "";
i = document.powersearch.elements[ObjID].options.length;
j = document.powersearch.elements[DesObjID].options.length;
for (h=0; h<i; h++)
{ if (document.powersearch.elements[ObjID].options[h].selected )
{ Code = document.powersearch.elements[ObjID].options[h].value;
Text = document.powersearch.elements[ObjID].options[h].text;
j = document.powersearch.elements[DesObjID].options.length;
if (Text.indexOf('--不限--')!=-1) {
for (k=j-1; k>=0; k-- ) {
document.powersearch.elements[DesObjID].options[k]=null;
}
j=0;
}
if (Text.substring(0,1)=='-' && Text.substring(1,2)!='-') {
for (k=j-1; k>=0; k-- ) {
if (((document.powersearch.elements[DesObjID].options[k].value).substring(0,2))==(Code.substring(0,2)))
document.powersearch.elements[DesObjID].options[k]=null;
}
j= document.powersearch.elements[DesObjID].options.length;
}
HasSelected = false;
for (k=0; k<j; k++ ) {
if ((document.powersearch.elements[DesObjID].options[k].text).indexOf('--不限--')!=-1){
HasSelected = true;
window.alert('已经包括本选项:'+Text);
break;
}
//else if ((document.powersearch.elements[DesObjID].options[k].text).indexOf('-')!=-1
else if ((document.powersearch.elements[DesObjID].options[k].text).substring(0,1) == '-'
&& ((document.powersearch.elements[DesObjID].options[k].value).substring(0,2)==Code.substring(0,2))){
HasSelected = true;
window.alert('已经包括本选项:'+Text);
break;
}
if (document.powersearch.elements[DesObjID].options[k].value == Code)
{ HasSelected = true;
break;
}
}
if ( HasSelected == false)
{
Text = trimPrefixIndent(Text);
if (CatValue !="")
{
Location = GetLocation(DesObjID, CatValue);
if ( Location == -1 )
{
document.powersearch.elements[DesObjID].options[j] = new Option("---"+CatValue+"---",CatCode);
document.powersearch.elements[DesObjID].options[j+1] = new Option(Text, Code);
}//if
else
{
InsertItem(DesObjID, Location+1);
document.powersearch.elements[DesObjID].options[Location+1] = new Option(Text, Code);
}//else
}
else
{
document.powersearch.elements[DesObjID].options[j] = new Option(Text, Code);
}
}//if
document.powersearch.elements[ObjID].options[h].selected =false;
}//if
}//for
document.powersearch.elements[ObjID].options[maxselected].selected =true;
}//if
}//end of function

function DeleteItem(ObjName)
{
ObjID = GetObjID(ObjName);
minselected=0;
if ( ObjID != -1 )
{
for (i=window.powersearch.elements[ObjID].length-1; i>=0; i--)
{ if (window.powersearch.elements[ObjID].options[i].selected)
{ // window.alert(i);
if (minselected==0 || i<minselected)
minselected=i;
window.powersearch.elements[ObjID].options[i] = null;
}
}
i=window.powersearch.elements[ObjID].length;

if (i>0) {
if (minselected>=i)
minselected=i-1;
window.powersearch.elements[ObjID].options[minselected].selected=true;
}
}
}

function trimPrefix(str,prefix)
{
var tmpstr = str;
var len = prefix.length;

//alert("char code:"+tmpstr.charCodeAt(0));
//alert(tmpstr.substring(0,len));
if(tmpstr.substring(0,len) == prefix)
//if(prefix.indexOf(tmpstr.substring(0,len)) != -1)
{
tmpstr = tmpstr.substr(len);
}
return tmpstr;
}

function trimPrefixIndent(str)
{
//(2004-01-18,by Fred)space in Option.text is unicode 160
var prefixIndent = String.fromCharCode(160,160)+"--";
return trimPrefix(str,prefixIndent);
}
</SCRIPT>
<FORM class=formfix name=powersearch action=/sc/my_se.php
method=post>
<CENTER>
<BR>
<TABLE cellSpacing=3 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width="40%"><SELECT style="WIDTH: 250px" multiple size=4
name=Areaca>
<OPTION value=0000 selected>--不限--</OPTION>
<OPTION value=0100>北京市</OPTION>
<OPTION
value=0200>上海市</OPTION>
<OPTION
value=0300>广东省</OPTION>
<OPTION
value=0302>  --广州市</OPTION>
<OPTION
value=0303>  --惠州市</OPTION>
<OPTION
value=0304>  --汕头市</OPTION>
<OPTION
value=0305>  --珠海市</OPTION>
<OPTION
value=0306>  --佛山市</OPTION>
<OPTION
value=0307>  --中山市</OPTION>
<OPTION
</SELECT> </TD>
<TD align=middle width="25%"><INPUT onclick="JavaScript:AddItem('Areaca','jobarea[]', '')" type=button value="添加>>" name="Input">
<BR> <INPUT onclick="JavaScript:DeleteItem('jobarea[]')" type=button value="<<删除" name="Input">
</TD>
<TD width="35%"><SELECT style="WIDTH: 170px" multiple size=4
name=jobarea[]>
</SELECT> </TD>
</TR>
</TBODY>
</TABLE>
<BR>
<BR>
</center>
</FORM>
...全文
273 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
hafeng58 2006-01-17
  • 打赏
  • 举报
回复
终于解决了,我换了另外一种方法,增加一个函数
function ToGo()
{

SelectTotal('hyfl[]');
document.edit.action="myyxchk.asp";
document.edit.submit();
}
谢谢大家!
hafeng58 2006-01-17
  • 打赏
  • 举报
回复
非常感谢 KimSoft(革命的小酒天天醉)及各位朋友的帮助

还是不行呀,老是没有起作用,非得要选择才有用,
可否发个完整的代码给我,谢谢!
  • 打赏
  • 举报
回复
//定义变量访问函数
function $() {
var elements = new Array();

for (var i = 0; i < arguments.length; i++) {
var element = arguments[i];
if (typeof element == 'string')
element = document.getElementById(element);

if (arguments.length == 1)
return element;

elements.push(element);
}

return elements;
}

//根据参数得到Radio选中值

function getRadioValue(name)
{
var arrObj = $a(name);
var arrLen = arrObj.length;
var value = false;
for (var i=0; i<arrLen; i++)
{
if (arrObj[i].checked){
value = arrObj[i].value;
break;
}
}
return value;
}

//根据参数得到CheckBox选中值

function getCheckBoxValue(id)
{
var obj = $(id);
if(obj.checked)
{
return obj.value;
}
return false;
}

//根据参数得到Select选中值

function getSelectValue(id)
{
var oSel = $(id);
return oSel.options[oSel.selectedIndex].value;
}

//通过下面定义函数方便调用各种类型表单数据

function getValue(id)
{
var obj = $(id);
var tagName = obj.tagName;

switch(tagName)
{
case 'INPUT':
var oType = obj.type;
switch (oType)
{
case 'radio':
value = getRadioValue(id);
break;
case 'checkbox':
value = getCheckBoxValue(id);
break;
default :
value = obj.value;
break;
}
break;
case 'SELECT':
value = getSelectValue(id);
break;
case 'TEXTAREA':
value = obj.value;
break;
default :
value = false;
break;
}

return value;
}

/*
* 定义清空所有输入内容;
*/

function AllClear()
{
for( var i=0; i<document.all.tags("input").length; i++ )
if( document.all.tags("input")[i].type == "text" )
document.all.tags("input")[i].value = "";
for( var i=0; i<document.all.tags("textarea").length; i++ )
document.all.tags("textarea")[i].value = "";
for( var i=0; i<document.all.tags("select").length; i++ )
document.all.tags("select")[i].value = "";
}
gbsck 2006-01-16
  • 打赏
  • 举报
回复
study
KimSoft 2006-01-16
  • 打赏
  • 举报
回复
<form action="Myyxchk.asp" name="edit" method="POST" onsubmit="selectAll(this.form.hyfl[]);">

这样也行,你的列表框名字真cool
KimSoft 2006-01-16
  • 打赏
  • 举报
回复

提交时将下拉框全部选中就OK了.

<form onsubmit="selectAll(document.getElementById(下拉框ID));">
.....
</form>
hafeng58 2006-01-16
  • 打赏
  • 举报
回复

<form action="Myyxchk.asp" name="edit" method="POST" onsubmit="selectAll(hyfl[])">
<SELECT
name=hyfl[] size=4 multiple id="hyfl[]" style="WIDTH: 170px">
</SELECT>
</form>
是这样调用吧,这里列表框名是hyfl[].
hafeng58 2006-01-16
  • 打赏
  • 举报
回复
还是不行呀,就是一定要在列表框里选中以后,才能够取到值.
是不是调用出了问题?
KimSoft 2006-01-16
  • 打赏
  • 举报
回复
原来是selectAll()没有起作用.如果选择以后就可以取到值.

什么意思?当然可以取到值了,搞定没?selectAll是没有问题的啊。
hafeng58 2006-01-16
  • 打赏
  • 举报
回复
原来是selectAll()没有起作用.如果选择以后就可以取到值.
hafeng58 2006-01-16
  • 打赏
  • 举报
回复
用selectAll就选中了啊,在处理页面用

request.form( "列表框name ")取值,值的形式用是,分开的字符串
.
.
.
.
怎么取到的是空值呀?
KimSoft 2006-01-16
  • 打赏
  • 举报
回复
你那个代码好象有点乱,你看看这个,存为htm运行一下看看,功能丰富

<html>
<head>
<SCRIPT language="javascript">
/***************************************************************************************************************
//more javascript from http://www.smallrain.net
* 创建时间:2004.6.23
* 创 建 人:LxcJie
* 文件描述:关于list列表框的一些工具方法
*
* 主要方法:
* 1, moveUp(oSelect,isToTop) ------------ 向上移动一个list列表框的选中项目,
* 可以支持多选移动,可以设置是否移动到顶层
* 2, moveDown(oSelect,isToBottom)---------- 向下移动一个list列表框的选中项目,
* 可以支持多选移动,可以设置是否移动到底层
* 3, moveSelected(oSourceSel,oTargetSel) ------ 在两个列表框之间转移数据
* 4, moveAll(oSourceSel,oTargetSel)--------- 转移两个列表框之间的全部数据
* 5, deleteSelectItem(oSelect) ----------- 删除所选的项目
*
****************************************************************************************************************/


/**
* 移动select的部分内容,必须存在value,此函数以value为标准进行移动
*
* oSourceSel: 源列表框对象
* oTargetSel: 目的列表框对象
*/
function moveSelected(sourceSelect, targetSelect){
var aryCachOption = new Array();
var index = 0;
for(var i = 0; i < sourceSelect.options.length; i++){
if (sourceSelect.options[i].selected){
aryCachOption[index] = sourceSelect.options[i];
index++;
}
}
for (var i = 0; i < aryCachOption.length; i++){
if (document.all){ //IE4 API
targetSelect.options[targetSelect.length] = new Option(aryCachOption[i].text, aryCachOption[i].value);
sourceSelect.removeChild(aryCachOption[i]);
} else if (document.getElementById){ //W3C API
targetSelect.options[targetSelect.length] = aryCachOption[i];
} else if (document.layers){ //Netscape 4 API
//todo For Netscape browser
} else {
alert("unknow browser!");
}
}
}

function moveSelected1(oSourceSel,oTargetSel)
{
//建立存储value和text的缓存数组
var arrSelValue = new Array();
var arrSelText = new Array();
//此数组存贮选中的options,以value来对应
var arrValueTextRelation = new Array();
var index = 0;//用来辅助建立缓存数组

//存储源列表框中所有的数据到缓存中,并建立value和选中option的对应关系
for(var i=0; i<oSourceSel.options.length; i++)
{
if(oSourceSel.options[i].selected)
{
//存储
arrSelValue[index] = oSourceSel.options[i].value;
arrSelText[index] = oSourceSel.options[i].text;
//建立value和选中option的对应关系
arrValueTextRelation[arrSelValue[index]] = oSourceSel.options[i];
index ++;
}
}

//增加缓存的数据到目的列表框中,并删除源列表框中的对应项
for(var i=0; i<arrSelText.length; i++)
{
//增加
var oOption = document.createElement("option");
oOption.text = arrSelText[i];
oOption.value = arrSelValue[i];
oTargetSel.add(oOption);
//删除源列表框中的对应项
oSourceSel.removeChild(arrValueTextRelation[arrSelValue[i]]);
}
}

//js文件完毕
</SCRIPT>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>新建网页 1</title>
</head>
<body background="200411822562825089.jpg">
<FORM name="form1" method="post" action="">
<SELECT name="left" size="10" id="left" multiple style="width:100px; ">
<OPTION value="aaaaa">aaaaa</OPTION>
<OPTION value="bbbbb">bbbbb</OPTION>
<OPTION value="ccccc">ccccc</OPTION>
</SELECT>
<INPUT style="border:1px solid black " type="button" value="<<<" onClick="moveSelected(document.form1.right,document.form1.left)">
<input name="button" type="button" style="border:1px solid black " onClick="moveSelected(document.form1.left,document.form1.right)" value=">>>">
<SELECT name="right" size="10" id="right" multiple style="width:100px; ">
<OPTION value="ddddd">ddddd</OPTION>
<OPTION value="eeeee">eeeee</OPTION>
<OPTION value="fffff">fffff</OPTION>
<OPTION value="ggggg">ggggg</OPTION>
<OPTION value="hhhhh">hhhhh</OPTION>
<OPTION value="iiiii">iiiii</OPTION>
</SELECT>
<br>
<br>
<br>
<br>
<DIV style="background-color:#CCCCCC;padding:2px">
<INPUT style="border:1px solid black " type="button" value="上移一格" onClick="moveUp(document.all.right);moveUp(document.all.left)">
<INPUT style="border:1px solid black " type="button" value="下移一格" onClick="moveDown(document.all.right);moveDown(document.all.left)">
<INPUT style="border:1px solid black " type="button" value="上移到顶"
onClick="moveUp(document.all.right,true);moveUp(document.all.left,true)">
<INPUT style="border:1px solid black " type="button" value="下移到顶"
onClick="moveDown(document.all.right,true);moveDown(document.all.left,true);">
(支持多选移动) </DIV>
<BR>
<BR>
<DIV style="background-color:#CCCCCC; padding:5px; width:100%; position:relative"> 右移:
<INPUT type="radio" name="ifAll" value="right" checked>
<br>
左移:
<INPUT type="radio" name="ifAll" value="left">
<br>
<br>
<INPUT type="button" value="移动全部" style="border:1px solid black " onClick="judgeMove()">
</DIV>
<br>
<br>
<DIV style="background-color:#CCCCCC; padding:5px">
<INPUT type="button" value=" 删 除 " style="border:1px solid black "
onClick="deleteSelectItem(document.all.left);deleteSelectItem(document.all.right)">
</div>
</FORM>
</BODY>
<SCRIPT language="javascript">
function judgeMove()
{
var arrRadio = document.all.ifAll;
var valOfRadio;
for(var i=0; i<arrRadio.length; i++)
{
if(arrRadio[i].checked)
{
valOfRadio = arrRadio[i].value;
break;
}
}
if(valOfRadio == "left")
moveAll(document.all.right,document.all.left);
if(valOfRadio == "right")
moveAll(document.all.left,document.all.right);
}
</SCRIPT>
</body>
</html>
KimSoft 2006-01-16
  • 打赏
  • 举报
回复
用selectAll就选中了啊,在处理页面用

request.form("列表框name")取值,值的形式用是,分开的字符串
hafeng58 2006-01-16
  • 打赏
  • 举报
回复
这样有个问题就是列表框里的内容需要选中吗?
yiyioo 2006-01-16
  • 打赏
  • 举报
回复
var A = selectElement.options[0].value;
var B = selectElement.options[1].value;
var B = selectElement.options[2].value;
hafeng58 2006-01-16
  • 打赏
  • 举报
回复
如果定义几个变量A,B,C
怎么把列表框的前3个值赋值给它们.
KimSoft 2006-01-16
  • 打赏
  • 举报
回复
/**
* Select All Options
* @param object selectElement as html element select
* @version build 20051029
* @author KimSoft
*/
function selectAll(selectElement){
for (var i = 0; i < selectElement.length; i++){
selectElement.options[i].selected = true;
}
}

'提交时将下拉框全部选中就OK了.

<form onsubmit="selectAll(下拉框ID);">
.....
</form>

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧