js问题总结1(fileupload,onpropertychange)

 

1.关于如何用脚本修改fileupload控件值的问题,

开发环境vs2005,在上传文件时,需要一个取消的按钮来清空type=file的value,而且这个页面上有多个file控件

这个比较麻烦因为file的值本身是不允许用脚本修改的(安全角度考虑)

方法1).使用脚本把这个file的input移动到一个form中,然后调用reset,如果有多个这样的input当然还要再移出来.这个方法我不会采用,因为对.net开发者

来讲习惯了一个页面就一个form所有控件都在其中.

方法2).这个方法有点投机,就是在脚本中调用
var fileup = document.getElementById(fileid);
fileup.outerHTML = fileup.outerHTML; 这个ie对脚本处理以及展现机制有关

方法3).这个主要是在解决ff上的问题时考虑到的,其实就是重新生成了一个id相同的file,这里要注意 name一定也要赋值,否则是很难提交给服务器接受的

ContractedBlock.gif ExpandedBlockStart.gif Code
var fileup = document.getElementById(clientid);
    
if(navigator.userAgent.indexOf("Firefox")>0)
    {
        var spanP 
= fileup.parentNode;  
        spanP.innerHTML
='<input id="'
                        
+fileup.id
                        
+'" class="inputtext txt2" contenteditable="false" type="file" size="50" name="'
                        
+fileup.name
                        
+'"/>';
    }

 

2.页面上有这样一个功能,就是点击一个js弹出日历上的日期时,要获取这个日期,并依次为参数转到相应的页面.

我随便找了一个日历控件(js),它可以把值付给input的text控件,于是放了一个隐藏的input的text控件,当它的值发生变化时

转到另外一个页面,如何监测这个变化我使用了onpropertychange事件:

ContractedBlock.gif ExpandedBlockStart.gif Code
function timechange()
{
   location.href 
= a.aspx?document.getElementById("txt_time").value;
}
<a href="#" id="a_time" onclick="MyCalendar.SetDate(this,document.getElementById('txt_time'));">时间</a>
<input style="display:none" type="text" id="txt_time" value="" onpropertychange="timechange();" />

问题是ff上此方法不灵,于是首先想到的用oninput事件来进行替换,遗憾的是oninput事件在用js对input赋值时并不触发

(说明一下用oninput是最好使用addEventListener),后来搜罗一下发现没有什么现成的事件可处理,作后被迫采用了定时器

来实现:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
var strTime = '';
function checktime()
{
    
if(document.getElementById("txt_time").value != strTime)
    {        
        location.href 
=a.aspx?document.getElementById("txt_time").value;        
    }  
    setTimeout(
"checktime()",100);  
}

<a href="#" id="a_time" onclick="MyCalendar.SetDate(this,document.getElementById('txt_time'));">时间</a>
<input style="display:none" type="text" id="txt_time" value="" />

if(navigator.userAgent.indexOf("Firefox")>0)
{
   strTime 
= document.getElementById("txt_time").value;
   setTimeout(
"checktime()",100);
}

转载于:https://www.cnblogs.com/feiyunfei/archive/2008/10/31/1323977.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值