input可以隐藏了还能被点击吗??
怎么让input隐藏了还能被点击呢?
或者说怎么让隐藏的元素还能被点击到触发事件呢?
在JS中给它发送一个点击事件就可以了啊。
在你需要它触发点击事件的函数中,调用 隐藏元素.click()就可以了啊。
实现类似Infinite给出的方法,除非是浏览器兼容问题不支持某些事件。
不过我倒是真碰到过奇葩平台把元素隐藏了就不正常的情况,我做了一个1像素宽高的容器把元素丢进去,类似下面的设置透明度。
显然是可以的,onclick的时候触发click方法,之前就写过一个,下面是部分代码
html 代码
<div 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>
</div>
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;
设置为透明
`input{
background-color:transparent;
border:transparent;
color:transparent;
outline:none;
}`
通过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);
/ 不占据空间,无法点击 /
}
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
经测试无论是
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>