js为select赋值,省市县三级联动,如何获取这三个的value

dahuzigkl 2015-06-30 11:15:25

<form aciton="../php/register.php" method="post">
<p>
<label style="color: #ffffff;width: 40%;text-align: right;">所  在  省:</label>
<select style="width:75%;" id="s_province" name="s_province" onchange="setVal1(this.options[this.selectedIndex].text)"></select>
</p>
<p>
<label style="color: #ffffff;width: 40%;text-align: right;">所  在  市:</label>
<select style="width:75%;" id="s_city" name="s_city" onchange="setVal2(this.options[this.selectedIndex].text)"></select>
</p>
<p>
<label style="color: #ffffff;width: 40%;text-align: right;">所  在  县:</label>
<select style="width:75%;" id="s_county" name="s_county" onchange="setVal3(this.options[this.selectedIndex].text)"></select>
</p>
<input type="hidden" id="shengText" value="" name="shengText"/>
<input type="hidden" id="xianText" value="" name="xianText"/>
<input type="hidden" id="shiText" value="" name="shiText"/>
<script class="resources library" src="http://sandbox.runjs.cn/uploads/rs/267/g3ugugjp/area.js" type="text/javascript"></script>
<script type="text/javascript">_init_area();</script>
<p><button type="submit" class="button1">注 册</button>
</p>
</form>
</div>
</body>
<script type="text/javascript">
var Gid = document.getElementById ;
var showArea = function(){
Gid('show').innerHTML = "<h3>省" + Gid('s_province').value + " - 市" +
Gid('s_city').value + " - 县/区" +
Gid('s_county').value + "</h3>"
}
Gid('s_county').setAttribute('onchange','showArea()');
</script>
<script language="javascript">
function setVal1(_text)
{
document.getElementById("shengText").value=_text;
}
function setVal2(_text)
{
document.getElementById("shiText").value=_text;
}
function setVal3(_text)
{
document.getElementById("xianText").value=_text;
}
</script>


这样我是能获取到值, 但是只获取到最后一个 县的那个 select值。 试了半个小时。发现是js文件为select赋值的原因。 有没有什么其他办法。 既可以用js文件为select赋值,还能获取到值为文本框赋值。
...全文
729 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_33208378 2016-03-30
  • 打赏
  • 举报
回复
我也遇到了,怎么解决啊楼主
盘锦公路车 2015-08-25
  • 打赏
  • 举报
回复
我也遇到这个问题了,楼主怎么解决的的?
hch126163 2015-08-25
  • 打赏
  • 举报
回复
onchange="setVal1(this.options[this.selectedIndex].text)" 事件被覆盖了 onchange=new Function("change("+(i+1)+")");
dahuzigkl 2015-06-30
  • 打赏
  • 举报
回复

var s=["s_province","s_city","s_county"];//三个select的name
var opt0 = ["省份","地级市","市、县级市"];//初始值
function _init_area(){  //初始化函数
	for(i=0;i<s.length-1;i++){
	  document.getElementById(s[i]).onchange=new Function("change("+(i+1)+")");
	}
	change(0);
}
还有这一段
dahuzigkl 2015-06-30
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
你怎么获取的?php?如果是js没有看到你的初始化代码怎么样的,如果是ajax异步加载的数据,要注意在回调中获取才行

function Dsy(){
	this.Items = {};
}
Dsy.prototype.add = function(id,iArray){
	this.Items[id] = iArray;
}
Dsy.prototype.Exists = function(id){
	if(typeof(this.Items[id]) == "undefined") return false;
	return true;
}

function change(v){
	var str="0";
	for(i=0;i<v;i++){
		str+=("_"+(document.getElementById(s[i]).selectedIndex-1));
	};
	var ss=document.getElementById(s[v]);
	with(ss){
		length = 0;
		options[0]=new Option(opt0[v],opt0[v]);
		if(v && document.getElementById(s[v-1]).selectedIndex>0 || !v){
			if(dsy.Exists(str)){
				ar = dsy.Items[str];
				for(i=0;i<ar.length;i++){
					options[length]=new Option(ar[i],ar[i]);
				}//end for
				if(v){ options[0].selected = true; }
			}
		}//end if v
		if(++v<s.length){change(v);}
	}//End with
}

var dsy = new Dsy();
dsy 里面存的是 省市县 的数据,数据量比较大,我就不放出来了。 js脚本是这样的
Go 旅城通票 2015-06-30
  • 打赏
  • 举报
回复
你怎么获取的?php?如果是js没有看到你的初始化代码怎么样的,如果是ajax异步加载的数据,要注意在回调中获取才行

87,884

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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