input可以隐藏了还能被点击吗?

input可以隐藏了还能被点击吗??

怎么让input隐藏了还能被点击呢?

或者说怎么让隐藏的元素还能被点击到触发事件呢?
阅读 13.7k
9 个回答

经测试无论是display:none;还是visibility:hidden;隐藏的元素的都无法被点击,
但是你可以在另一事件中获取到该input元素,然后在该事件中调用隐藏的input的点击事件,只不过这样没什么意义,我用这个模拟过图片上传,点击一张图片,然后实际点击的是一个文件input,然后可以选择文件

<!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 代码

<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('图片添加成功');
}

这样就可以了

总结一下,可能的方法有这些

  1. 设置opacity:0;

  2. 设置为透明
    `input{
    background-color:transparent;
    border:transparent;
    color:transparent;
    outline:none;
    }`

  3. 通过jQuerytrigger触发该事件,比如在需要触发的时候$("input").trigger("click");

  4. 在需要触发的时候直接调用事件

是可以的哈!先绑定事件,再触发。

<!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);
/ 不占据空间,无法点击 /
}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题