非ie下如何解决类似onpropertychange的数值传递(js):
这个问题问了很多人都无解,这次特设高分求解!!ie下的onpropertychange方法,可以完全做到text(input的text)间传递数据的需求。但是在非ie(如...
这个问题问了很多人都无解,这次特设高分求解!!
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等等。所以不能这样改。
这个问题问了很多人都无解,这次特设高分求解!! 展开
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等等。所以不能这样改。
这个问题问了很多人都无解,这次特设高分求解!! 展开
展开全部
思路:
分IE和非IE进行处理,同时IE11也和IE11以下版本有所不同。也就是分2类:
1、IE10及以下
2、IE11及其他浏览器
代码
function inputChange(){
alert(1);
}
1、IE10及以下
document.getElementById('start_time').attachEvent("onpropertychange",inputChange);
2、IE11及其他浏览器
document.getElementById('start_time').addEventListener("input",inputChange,false);
展开全部
非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'
}
}
比如:
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'
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
非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错误使日期数据丢失的问题!
1.在表单提交时再进行合并。
2.提交至服务器后进行日期合并。
因浏览器js触发问题而产生的延迟或数据错误!建议你提交至服务器后再进行日期合并!
这样即不会造成js禁用或其他js错误使日期数据丢失的问题!
追问
当然不是在服务器数据记录用(如果是记录干嘛还要产生text之类的),是给用户做选择用的,比如用户选择两个时间段,进行两个时间段之间的搜索之类的。
追答
我没说做数据记录的! 你这搜索难道不需要与服务器交互?那得了。
我是看了你的要求,text3只是作为提交用,只是作为提交用的东西就可以在提交时进行合并或者提交后服务器端进行合并。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看来你就是个事件触发问题 实在不行加个button 自己点吧 虽然体验不好 好歹功能实现了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询