扫码关注官方订阅号
input可以隐藏了还能被点击吗?? 怎么让input隐藏了还能被点击呢? 或者说怎么让隐藏的元素还能被点击到触发事件呢?
业精于勤,荒于嬉;行成于思,毁于随。
经测试无论是display:none;还是visibility:hidden;隐藏的元素的都无法被点击,但是你可以在另一事件中获取到该input元素,然后在该事件中调用隐藏的input的点击事件,只不过这样没什么意义,我用这个模拟过图片上传,点击一张图片,然后实际点击的是一个文件input,然后可以选择文件<!DOCTYPE html><html lang="en"><head>
display:none;
visibility:hidden;
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8"> <title>input</title> <style type="text/css"> #input { display: none; /*visibility: hidden;//这会导致input占据的空间还在 */ } </style>
</head><body><input id="input" type='text' onclick="a()" /><button onclick="b()">click</button><script type="text/javascript">
function a() { alert(123); } function b() { var input = document.getElementById('input'); input.click(); } </script>
</body></html>
在JS中给它发送一个点击事件就可以了啊。在你需要它触发点击事件的函数中,调用 隐藏元素.click()就可以了啊。
实现类似Infinite给出的方法,除非是浏览器兼容问题不支持某些事件。
不过我倒是真碰到过奇葩平台把元素隐藏了就不正常的情况,我做了一个1像素宽高的容器把元素丢进去,类似下面的设置透明度。
隐藏的点击不了的。要不然很多上传的为什么用特别做 flash 来美化界面。
可以设置透明度:opacity:0;
显然是可以的,onclick的时候触发click方法,之前就写过一个,下面是部分代码
html 代码
<p class="pic" id="upload" onclick="javascript:void(sDialog())"> <img src="/Common/images/img.jpg"> <input type="file" id="fileToUpload" name="fileToUpload" style="display:none;" onchange="dochange(this);"/>上传图片 <span id="res" style="padding-left:20px; color:green"></span> </p>
js 代码
function sDialog() { var dataForm = document.forms['form1']; dataForm.fileToUpload.click(); } function dochange(){ $("#res").html('图片添加成功'); }
这样就可以了
https://jsfiddle.net/qichengzx/nx6g4je5/1/embedded/result/
你们猜会怎么样?jQuery 1.7.2
注释掉的一行跟上边的一个意思
总结一下,可能的方法有这些
设置opacity:0;
opacity:0;
设置为透明`input{ background-color:transparent; border:transparent; color:transparent; outline:none;}`
通过jQuery的trigger触发该事件,比如在需要触发的时候$("input").trigger("click");
jQuery
trigger
$("input").trigger("click")
在需要触发的时候直接调用事件
是可以的哈!先绑定事件,再触发。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <input type="hidden" id="J_hideBox"> <script src="http://apps.bdimg.com/libs/jquery/1.8.3/jquery.min.js"></script> <script> $(function() { var box = $('#J_hideBox'); box.on('click', function() { console.log('我被点击了'); }); window.setTimeout(function() { box.trigger('click'); }, 2000); }); </script> </body> </html>
{ display: none; / 不占据空间,无法点击 / } /**/{ visibility: hidden; / 占据空间,无法点击 / } /**/{ position: absolute; top: -999em; / 不占据空间,无法点击 / } /**/{ position: relative; top: -999em; / 占据空间,无法点击 / } /**/{ position: absolute; visibility: hidden; / 不占据空间,无法点击 / } /**/{ height: 0; overflow: hidden; / 不占据空间,无法点击 / } /**/{ opacity: 0; filter:Alpha(opacity=0); / 占据空间,可以点击 / } /**/{ position: absolute; opacity: 0; filter:Alpha(opacity=0); / 不占据空间,可以点击 / } /**/{ zoom: 0.001; -moz-transform: scale(0); -webkit-transform: scale(0); -o-transform: scale(0); transform: scale(0); / IE6/IE7/IE9不占据空间,IE8/FireFox/Chrome/Opera占据空间。都无法点击 / } /**/{ position: absolute; zoom: 0.001; -moz-transform: scale(0); -webkit-transform: scale(0); -o-transform: scale(0); transform: scale(0); / 不占据空间,无法点击 / }
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
经测试无论是
display:none;还是visibility:hidden;隐藏的元素的都无法被点击,但是你可以在另一事件中获取到该input元素,然后在该事件中调用隐藏的input的点击事件,只不过这样没什么意义,我用这个模拟过图片上传,点击一张图片,然后实际点击的是一个文件input,然后可以选择文件
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<input id="input" type='text' onclick="a()" />
<button onclick="b()">click</button>
<script type="text/javascript">
</body>
</html>
在JS中给它发送一个点击事件就可以了啊。
在你需要它触发点击事件的函数中,调用 隐藏元素.click()就可以了啊。
实现类似Infinite给出的方法,除非是浏览器兼容问题不支持某些事件。
不过我倒是真碰到过奇葩平台把元素隐藏了就不正常的情况,我做了一个1像素宽高的容器把元素丢进去,类似下面的设置透明度。
隐藏的点击不了的。要不然很多上传的为什么用特别做 flash 来美化界面。
可以设置透明度:opacity:0;
显然是可以的,onclick的时候触发click方法,之前就写过一个,下面是部分代码
html 代码
js 代码
这样就可以了
https://jsfiddle.net/qichengzx/nx6g4je5/1/embedded/result/
你们猜会怎么样?
jQuery 1.7.2
注释掉的一行跟上边的一个意思
总结一下,可能的方法有这些
设置
opacity:0;设置为透明
`input{
background-color:transparent;
border:transparent;
color:transparent;
outline:none;
}`
通过
jQuery的trigger触发该事件,比如在需要触发的时候$("input").trigger("click");在需要触发的时候直接调用事件
是可以的哈!先绑定事件,再触发。
{ display: none; / 不占据空间,无法点击 / }
/**/
{ visibility: hidden; / 占据空间,无法点击 / }
/**/
{ position: absolute; top: -999em; / 不占据空间,无法点击 / }
/**/
{ position: relative; top: -999em; / 占据空间,无法点击 / }
/**/
{ position: absolute; visibility: hidden; / 不占据空间,无法点击 / }
/**/
{ height: 0; overflow: hidden; / 不占据空间,无法点击 / }
/**/
{ opacity: 0; filter:Alpha(opacity=0); / 占据空间,可以点击 / }
/**/
{ position: absolute; opacity: 0; filter:Alpha(opacity=0); / 不占据空间,可以点击 / }
/**/
{
zoom: 0.001;
-moz-transform: scale(0);
-webkit-transform: scale(0);
-o-transform: scale(0);
transform: scale(0);
/ IE6/IE7/IE9不占据空间,IE8/FireFox/Chrome/Opera占据空间。都无法点击 /
}
/**/
{
position: absolute;
zoom: 0.001;
-moz-transform: scale(0);
-webkit-transform: scale(0);
-o-transform: scale(0);
transform: scale(0);
/ 不占据空间,无法点击 /
}