<span id="xpr"><select name="pr_id" id="pr_id" disabled><option value="">选择产品...</option></select></span>xpr通过ajax返值<select name="pr_id" id="pr_id" ...><input type="button" onclick="window.location.href='?action=pi&pr_id='+ quzhi('pr_id')" value="提交">--------------javascript------------------
function quzhi(str){
var obj;
obj=document.getElementById(str);
if(obj!=null){
for(var i=0;i<obj.length;i++){
if(obj[i].selected){
return obj[i].value;
}
}
}
}------------------------------------------在IE下,取值正确
在FireFox和Chrome都取不到?测试发现是obj[i].selected这句判断问题该怎么修改才能通用呢?
obj.options[i].selectedobj.options[i].value
一样是IE可以,FF和谷歌都不行判断式if(obj[i].selected) 或 if(obj.options[i].selected) 在FF和谷歌下都没反应
var obj;
obj=document.getElementById(str);
if(obj!=null){
for(var i=0;i<obj.length;i++){
if(obj[i].selected){
return obj[i].value;
}
}直接 return obj.value;就是选中的值,兼容IE,FF
换成obj[i].text试试
试过了。。问题没变 :(而且ajax替换整个 <span id="xpr">(替换的内容)<span>,替换掉的<select>里是没有disabled
<option value="">选择产品...</option>
<option value="1">11</option>
<option value="2">22</option>
</select>
<input type="button" onclick="alert(quzhi('pr_id'))" value="提交" />
<script>
function quzhi(str){
var obj;
obj=document.getElementById(str);
if(obj!=null){
for(var i=0;i<obj.options.length;i++){
if(obj.options[i].selected){
return obj.options[i].value;
}
}
}
}
</script>
<select name="pr_id" id="pr_id" disabled>
<option value="">选择产品...</option>
<option value="op1">11</option>
<option value="op2" selected>22</option>
</select>
<input type="button" onclick="alert(quzhi('pr_id'))" value="提交"/>
<script>
function quzhi(str) {
var obj;
obj = document.getElementById(str);
return obj.value;
}
</script>
没用通过ajax是可以正常取值,在6楼我有说了 - -!问题是我需要用到ajax来做多级下拉菜单关联
function CreateXMLHttpRequest()
{
var XMLHttp=false;
try
{
XMLHttp=new ActiveXObject('Msxm12.XMLHTTP');
}
catch(e)
{
try
{
XMLHttp=new ActiveXObject('Microsoft.XMLHTTP');
}
catch(e)
{
try
{
XMLHttp=new XMLHttpRequest();
}
catch(e)
{
XMLHttp = false;
}
}
}
return XMLHttp;
}
function xpr(str)
{
var XMLHttp=CreateXMLHttpRequest();
XMLHttp.open("get","check_other.asp?action=xpr&p_id="+str+"&"+new Date().getTime(),true);
XMLHttp.onreadystatechange=function()
{
if(XMLHttp.readyState==4)
{
if(XMLHttp.status==200)
{
var pnum=XMLHttp.responseText;
document.getElementById("xpr").innerHTML=pnum;
}
}
}
XMLHttp.send(null);
}
------------------------------返回的pnum------------------------
<select name="pr_id" id="pr_id">
<option value="">选择产品...</option>
<option value="1">A产品</option>
<option value="2">B产品</option>
<option value="3">C产品</option>
</select>
Dim action
action = Request.QueryString("action")
If action <> "" Then
Response.Write Request.QueryString("p_id")
Response.End
End If%><script>
function CreateXMLHttpRequest()
{
var XMLHttp=false;
try
{
XMLHttp=new ActiveXObject('Msxm12.XMLHTTP');
}
catch(e)
{
try
{
XMLHttp=new ActiveXObject('Microsoft.XMLHTTP');
}
catch(e)
{
try
{
XMLHttp=new XMLHttpRequest();
}
catch(e)
{
XMLHttp = false;
}
}
}
return XMLHttp;
}
function xpr(str)
{
var x=CreateXMLHttpRequest();
if(!x)
{
alert("不能创建")
return
}
x.open("get","a.asp?action=xpr&p_id="+str+"&"+new Date().getTime(),true);
x.onreadystatechange=function()
{
if(x.readyState==4)
{
if(x.status==200)
{
var pnum=x.responseText;
document.getElementById("xpr").innerHTML=pnum;
}
}
}
x.send(null);
}</script><select name="pr_id" id="pr_id">
<option value="">选择产品...</option>
<option value="1">11</option>
<option value="2">22</option>
</select>
<input type="button" onclick="xpr(quzhi('pr_id'))" value="提交" />
<script>
function quzhi(str){
var obj;
obj=document.getElementById(str);
if(obj!=null){
for(var i=0;i<obj.options.length;i++){
if(obj.options[i].selected){
return obj.options[i].value;
}
}
}
}
</script>
<div id=xpr></div>
x.open("GET","a.asp?action=xpr&p_id="+str+"&"+new Date().getTime(),true);
可能是我表达没清楚,,,你误解我的意思了================================================
<select name="pr_class" id="pr_class" onchange="xpr(this.value);">...</select>
通过选择这个下拉菜单,触发ajax,返回值替换<span id="xpr">...</span>中的<select name="pr_id" id="pr_id"...</select>内容然后点击提交 获取替换后的产品下拉菜单所选值
谁说的FF3用document.getElementById有问题?
可以这样啊obj=document.getElementById(str);
obj.length=0
然后
obj.options[obj.options.length] = new Option("x","xx")
即可重新生成select。
Dim action
action = Request.QueryString("action")
If action <> "" Then
pid = Request.QueryString("p_id")
If pid = "1" Then
Response.Write "<select name='pr_id' id='pr_id' onchange='xpr(this.value)'><option value=''>测试下拉1</option><option value='1'>A产品</option><option value='2'>B产品</option><option value='3'>C产品</option></select>"
ElseIf pid = "2" Then
Response.Write "<select name='pr_id' id='pr_id' onchange='xpr(this.value)'><option value=''>测试下拉2</option><option value='1'>A产品AAAA</option><option value='2'>B产品AAAAA</option><option value='3'>C产品AAAA</option></select>"
ElseIf pid = "3" Then
Response.Write "<select name='pr_id' id='pr_id' onchange='xpr(this.value)'><option value=''>测试下拉3</option><option value='1'>A产品AAAA</option><option value='2'>B产品AAAAA</option><option value='3'>C产品AAAA</option></select>"
Else
Response.Write "<select name='pr_id' id='pr_id'><option value=''>无需选择产品...</option></select>"
End If
Response.End
End If%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><script>
function CreateXMLHttpRequest()
{
var XMLHttp=false;
try
{
XMLHttp=new ActiveXObject('Msxm12.XMLHTTP');
}
catch(e)
{
try
{
XMLHttp=new ActiveXObject('Microsoft.XMLHTTP');
}
catch(e)
{
try
{
XMLHttp=new XMLHttpRequest();
}
catch(e)
{
XMLHttp = false;
}
}
}
return XMLHttp;
}
function xpr(str)
{
var x=CreateXMLHttpRequest();
if(!x)
{
alert("不能创建")
return
}
x.open("GET","a.asp?action=xpr&p_id="+str+"&"+new Date().getTime(),true);
x.onreadystatechange=function()
{
if(x.readyState==4)
{
if(x.status==200)
{
var pnum=x.responseText;
document.getElementById("xpr2").innerHTML=pnum;
}
}
}
x.send(null);
}</script>
<span id="xpr2">
<select name="pr_id" id="pr_id" onchange="xpr(this.value)">
<option value="">选择产品...</option>
<option value="1">11</option>
<option value="2">22</option>
</select>
</span>
厄,,辛苦了,,不过写的不是我要的 ,,,我是要点击button进行提交,里面onclick还会包含其他参数,如果直接写在select里,那用户操作会无法操作其他选项ajax只替换<span id="xpr">...</span>里的select内容,提交的按钮则在原来的位置没变也没被替换
这不是你自己写的吗??
这哪里是
ajax只替换<span id="xpr">...</span>里的select内容
啊??
你都没把问题搞清楚
<select name="pr_class" id="pr_class" onchange="xpr(this.value);">...</select>
<span id="xpr"><select name="pr_id" id="pr_id" disabled><option value="">选择产品...</option></select></span>
<input type="button" value="提交" onclick="window.location.href='?action=pi&pr_id='+ quzhi('pr_id')">ajax后的
<select name="pr_class" id="pr_class" onchange="xpr(this.value);">...</select>
<span id="xpr"><select name="pr_id" id="pr_id"><option value="">选择产品...</option><option value="1">A产品</option><option value="2">B产品</option><option value="3">C产品</option></select></span>
<input type="button" value="提交" onclick="window.location.href='?action=pi&pr_id='+ quzhi('pr_id')">这样写应该就清楚了,红色部分是替换前后,提交按钮没有参与ajax
document.getElementById("xpr").innerHTML=xmlhttp.responseText
不就变成你想要的结果了吗?