2个回答
展开全部
这个机制有问题,毕竟在FF下那个click事件是模拟的,file的值通过模拟click事件获取的文件不能提交,也不能传给其他函数,因此就算你通过某种强力手法输入了file的指,也不见得能顺利提交
如果你实在想点击那个file,试试引入一下jquery,它已经帮你做了很多事情,你可以直接用.click()的方式来触发事件,兼容性jquery已经帮你做得很好了,不过我没有去尝试,即便是click成功也不保证可以正确提交表单
你可以尝试一下另外的思路,网上流传一种方法是模拟定位,然后让file透明来自定义file表单域的
<script>
function fclick(obj){
with(obj){
style.posTop=event.srcElement.offsetTop //设置透明上传框的Y坐标跟模拟按钮的Y坐标对齐
style.posLeft=event.x-offsetWidth/2 //设置透明上传框的X坐标为鼠标在X轴上的坐标加上它的宽的一半(确保点击时能点中透明上传框的按钮控件),这里只是提供一种思路,其实还可以更精确的控制它的X坐标范围
}
}
</script>
或者精确X:
<script>
function fclick(obj){
with(obj){
style.posTop=event.srcElement.offsetTop //设置透明上传框的Y坐标跟模拟按钮的Y坐标对齐
var x=event.x-offsetWidth/2
if(x<event.srcElement.offsetLeft)x=event.srcElement.offsetLeft
if(x>event.srcElement.offsetLeft+event.srcElement.offsetWidth-offsetWidth)x=event.srcElement.offsetLeft+event.srcElement.offsetWidth-offsetWidth
style.posLeft=x }
}
</script>
file也要做隐藏处理
<input type="file" name="picpath" id="picpath" style="position:absolute;filter:alpha(opacity=0);width:30px;" onChange="document.formen.path.value=this.value" hidefocus=“hidefocus”>
大概原理就这样,调试兼容性是很麻烦的事情,不好意思我暂时没时间一步一步去验证,你按照这个思路再试试
如果你实在想点击那个file,试试引入一下jquery,它已经帮你做了很多事情,你可以直接用.click()的方式来触发事件,兼容性jquery已经帮你做得很好了,不过我没有去尝试,即便是click成功也不保证可以正确提交表单
你可以尝试一下另外的思路,网上流传一种方法是模拟定位,然后让file透明来自定义file表单域的
<script>
function fclick(obj){
with(obj){
style.posTop=event.srcElement.offsetTop //设置透明上传框的Y坐标跟模拟按钮的Y坐标对齐
style.posLeft=event.x-offsetWidth/2 //设置透明上传框的X坐标为鼠标在X轴上的坐标加上它的宽的一半(确保点击时能点中透明上传框的按钮控件),这里只是提供一种思路,其实还可以更精确的控制它的X坐标范围
}
}
</script>
或者精确X:
<script>
function fclick(obj){
with(obj){
style.posTop=event.srcElement.offsetTop //设置透明上传框的Y坐标跟模拟按钮的Y坐标对齐
var x=event.x-offsetWidth/2
if(x<event.srcElement.offsetLeft)x=event.srcElement.offsetLeft
if(x>event.srcElement.offsetLeft+event.srcElement.offsetWidth-offsetWidth)x=event.srcElement.offsetLeft+event.srcElement.offsetWidth-offsetWidth
style.posLeft=x }
}
</script>
file也要做隐藏处理
<input type="file" name="picpath" id="picpath" style="position:absolute;filter:alpha(opacity=0);width:30px;" onChange="document.formen.path.value=this.value" hidefocus=“hidefocus”>
大概原理就这样,调试兼容性是很麻烦的事情,不好意思我暂时没时间一步一步去验证,你按照这个思路再试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
您好!很高兴为您答疑!
firefox这个特性最好用不过了:
while(true) alert("x");
火狐下直接点那个勾就行了,调试的时候很方便的
您可以在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。
firefox这个特性最好用不过了:
while(true) alert("x");
火狐下直接点那个勾就行了,调试的时候很方便的
您可以在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |