非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等等。所以不能这样改。

这个问题问了很多人都无解,这次特设高分求解!!
展开
 我来答
woshidaniel
2015-08-22 · TA获得超过9240个赞
知道小有建树答主
回答量:1760
采纳率:96%
帮助的人:957万
展开全部

思路:

分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);
nx8823520
推荐于2016-06-07 · TA获得超过648个赞
知道小有建树答主
回答量:324
采纳率:0%
帮助的人:344万
展开全部
非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'
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友861de7d5ca8
2015-08-10 · TA获得超过2.3万个赞
知道小有建树答主
回答量:1497
采纳率:90%
帮助的人:113万
展开全部

非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'
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yjwdzyx
2011-08-09 · 超过21用户采纳过TA的回答
知道答主
回答量:92
采纳率:0%
帮助的人:58.2万
展开全部
如果只是作为服务器数据记录用,那就有多种方式
1.在表单提交时再进行合并。
2.提交至服务器后进行日期合并。

因浏览器js触发问题而产生的延迟或数据错误!建议你提交至服务器后再进行日期合并!
这样即不会造成js禁用或其他js错误使日期数据丢失的问题!
追问
当然不是在服务器数据记录用(如果是记录干嘛还要产生text之类的),是给用户做选择用的,比如用户选择两个时间段,进行两个时间段之间的搜索之类的。
追答
我没说做数据记录的! 你这搜索难道不需要与服务器交互?那得了。
我是看了你的要求,text3只是作为提交用,只是作为提交用的东西就可以在提交时进行合并或者提交后服务器端进行合并。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
czd0001693
2011-08-12 · TA获得超过202个赞
知道小有建树答主
回答量:532
采纳率:0%
帮助的人:251万
展开全部
看来你就是个事件触发问题 实在不行加个button 自己点吧 虽然体验不好 好歹功能实现了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式