非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,求解答。