当前位置:编程学习 > JS >>

非ie下如何解决类似onpropertychange的数值传递(js):

这个问题问了很多人都无解,这次特设高分求解!! ie下的onpropertychange方法,可以完全做到text(input的text)间传递数据的需求。但是在非ie(如火狐FF等),onpropertychange方法无效,只有onchange和oninput,但是都无法做到对javascript产生的改变相应。 比如我现在的情况是,有一个日期控件,点击以后把日期传入text1,在text2中还有另一个时间。一起合并成为“日期+时间”的方式传入text3(最后提交用)。 在ie下可以在text1中加入一个onpropertychange方法,当text1值改变时,把text1+text2写入text3。但是现在我们领导要求做一个ipad下可以用的页面,但是ipad下没有ie只有safari。非ie就不支持onpropertychange,如果用oninput来代替,也无法支持这种javascript产生的传递。 当然也有人说,直接在日期控件的地方,就直接“点击时候就把text1(选择的日期)+text2写入text3”不就可以了么?但是日期控件是一个通用控件,在很多其他页面都有使用,也许其他地方是加上text4写入text5等等。所以不能这样改。 这个问题问了很多人都无解,这次特设高分求解!!
追问:当然不是在服务器数据记录用(如果是记录干嘛还要产生text之类的),是给用户做选择用的,比如用户选择两个时间段,进行两个时间段之间的搜索之类的。
答案:非IE的可以做个判断  可以直接用oninput

比如:

if(window.attachEvent){
		_this.attachEvent('onpropertychange',function(o){
			var obj = o.srcElement;
			var scrollH = obj.scrollHeight;
			obj.style.height = scrollH + 'px';
		})
	}else{
		_this.oninput = function(){
			this.style.height='0px';	
			this.style.height=this.scrollHeight + 'px'
		}
	}
其他:如果只是作为服务器数据记录用,那就有多种方式
1.在表单提交时再进行合并。
2.提交至服务器后进行日期合并。

因浏览器js触发问题而产生的延迟或数据错误!建议你提交至服务器后再进行日期合并!
这样即不会造成js禁用或其他js错误使日期数据丢失的问题! 看来你就是个事件触发问题  实在不行加个button 自己点吧 虽然体验不好 好歹功能实现了 

上一个:关于js的
下一个:vs2010无法调试JS,求解答。

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,