我要达到的目的是当我选择两个下拉列表中一个的时候,我要同时带出另外一个对应的下拉列表的数据。但又一种情况:就是有些校验失败的话,我要重新加载在第一个下拉列表对应的第二个下拉列表的数据。
我的项目是asp.net 我是通过ajax把另外的一个下拉列表的数据通过json带出://以下是带出对应的数据方法
function GetStatusByKpiTypeId(kpiTypeCtrl)
{
var kpiTypeId=kpiTypeCtrl.options[kpiTypeCtrl.selectedIndex].value; if(kpiTypeId.length!=0)
{
//服务器端的Ajax类方法
EasyTMS.App_Code.AjaxMethod.GetStatusByKpiTypeId(kpiTypeId,GetStatusByKpiTypeIdCallBack);
}
}function GetStatusByKpiTypeIdCallBack(res)
{
var ddlStartStatusCodeCtrl=document.getElementById('<%=ddlEditStartStatusCode.ClientID %>').id;
var ddlStopStatusCodeCtrl=document.getElementById('<%=ddlEditStopStatusCode.ClientID %>').id;
//Select是另外的一个js文件里面的对象
Select.clear(ddlStartStatusCodeCtrl);
Select.clear(ddlStopStatusCodeCtrl);
Select.addOption(ddlStartStatusCodeCtrl,'','-->请选择<--');
Select.addOption(ddlStopStatusCodeCtrl,'','-->请选择<--');
var jsonString = res.value; // 获取服务器返回的json字符串
if( jsonString!=undefined &&
jsonString!=null &&
jsonString.length!=0)
{
var jsonObj = null;
try
{
jsonObj = eval('(' + jsonString + ')'); // 将json字符串转换成对象
Select.create(ddlStartStatusCodeCtrl, jsonObj,false); // 执行option的添加
Select.create(ddlStopStatusCodeCtrl, jsonObj,false); // 执行option的添加
var currentKpiTypeValue=document.getElementById('<%=ddlEditKpiType.ClientID %>').value;
//Set Value
var hidTempKpiTypeValue=document.getElementById('<%=hidTempKpiTypeId.ClientID %>').value;
//我是通过以下两个隐藏的控件记录了那个被带出的下拉列表后,再选中的数据
var hidStartStatusCodeValue=document.getElementById('<%=hidStartStatusCodeEditOrAdd.ClientID %>').value;
var hidStopStatusCodeValue=document.getElementById('<%=hidStopStatusCodeEditOrAdd.ClientID %>').value;
SetOptionSelectByValue(hidStartStatusCodeValue,ddlStartStatusCodeCtrl);
SetOptionSelectByValue(hidStopStatusCodeValue,ddlStopStatusCodeCtrl);
}
catch (ex)
{
return null;
}
finally
{
//设置记录控件为选择的值(在这两个下拉列表事件中就是给以上对应的hidStartStatusCodeEditOrAdd、hidStopStatusCodeEditOrAdd赋值)
document.getElementById(ddlStartStatusCodeCtrl).onchange();
document.getElementById(ddlStopStatusCodeCtrl).onchange();
}
}
}//设置选择的值
function SetOptionSelectByValue(_value,_selectClientId)
{
//判断是否存在
var isExit = false;
var objSelect=document.getElementById(_selectClientId);
for(var i=0;i<objSelect.options.length;i++)
{
if(objSelect.options[i].value == _value)
{
objSelect.options[i].selected = true;
isExit = true;
break;
}
}
}
我的项目是asp.net 我是通过ajax把另外的一个下拉列表的数据通过json带出://以下是带出对应的数据方法
function GetStatusByKpiTypeId(kpiTypeCtrl)
{
var kpiTypeId=kpiTypeCtrl.options[kpiTypeCtrl.selectedIndex].value; if(kpiTypeId.length!=0)
{
//服务器端的Ajax类方法
EasyTMS.App_Code.AjaxMethod.GetStatusByKpiTypeId(kpiTypeId,GetStatusByKpiTypeIdCallBack);
}
}function GetStatusByKpiTypeIdCallBack(res)
{
var ddlStartStatusCodeCtrl=document.getElementById('<%=ddlEditStartStatusCode.ClientID %>').id;
var ddlStopStatusCodeCtrl=document.getElementById('<%=ddlEditStopStatusCode.ClientID %>').id;
//Select是另外的一个js文件里面的对象
Select.clear(ddlStartStatusCodeCtrl);
Select.clear(ddlStopStatusCodeCtrl);
Select.addOption(ddlStartStatusCodeCtrl,'','-->请选择<--');
Select.addOption(ddlStopStatusCodeCtrl,'','-->请选择<--');
var jsonString = res.value; // 获取服务器返回的json字符串
if( jsonString!=undefined &&
jsonString!=null &&
jsonString.length!=0)
{
var jsonObj = null;
try
{
jsonObj = eval('(' + jsonString + ')'); // 将json字符串转换成对象
Select.create(ddlStartStatusCodeCtrl, jsonObj,false); // 执行option的添加
Select.create(ddlStopStatusCodeCtrl, jsonObj,false); // 执行option的添加
var currentKpiTypeValue=document.getElementById('<%=ddlEditKpiType.ClientID %>').value;
//Set Value
var hidTempKpiTypeValue=document.getElementById('<%=hidTempKpiTypeId.ClientID %>').value;
//我是通过以下两个隐藏的控件记录了那个被带出的下拉列表后,再选中的数据
var hidStartStatusCodeValue=document.getElementById('<%=hidStartStatusCodeEditOrAdd.ClientID %>').value;
var hidStopStatusCodeValue=document.getElementById('<%=hidStopStatusCodeEditOrAdd.ClientID %>').value;
SetOptionSelectByValue(hidStartStatusCodeValue,ddlStartStatusCodeCtrl);
SetOptionSelectByValue(hidStopStatusCodeValue,ddlStopStatusCodeCtrl);
}
catch (ex)
{
return null;
}
finally
{
//设置记录控件为选择的值(在这两个下拉列表事件中就是给以上对应的hidStartStatusCodeEditOrAdd、hidStopStatusCodeEditOrAdd赋值)
document.getElementById(ddlStartStatusCodeCtrl).onchange();
document.getElementById(ddlStopStatusCodeCtrl).onchange();
}
}
}//设置选择的值
function SetOptionSelectByValue(_value,_selectClientId)
{
//判断是否存在
var isExit = false;
var objSelect=document.getElementById(_selectClientId);
for(var i=0;i<objSelect.options.length;i++)
{
if(objSelect.options[i].value == _value)
{
objSelect.options[i].selected = true;
isExit = true;
break;
}
}
}
解决方案 »
- js的停止运行函数是什么?
- wordpress在线升级到2.8.1,结果主题的许多JS功能没了
- FF中,如何输出选中范围的 HTML内容 ???
- 如何实现 input中日期"-"符号不能修改 只能修改其中的数字????
- jquery初学,load一问
- 想找全屏效果.急!!!
- 一看比较好的js对话框组件--artDialog
- 奇怪,为什么在ie中javascript比vbscript性能差这么多?
- 如何自定义表单元素的属性?例如,objSelect.ExistValue('test')返回一个下拉框中是否存在值为test的选项
- 如何用JS关联筛选拼接两个JSON
- JS如何得到IFRAME中SRC文件的内容?
- 请教一个工具栏显示的问题!
我在IE7,FIXFOX里是可以赋值的。
在ie6下,如果我在这句话的上面加个alert函数也是可以初始化选中的。但是我没加的话,我是不能出示话选中的值。
你可以看看这里对select的操作