0

我正在做一个项目,我需要一个隐藏的输入字段来接受用户输入。

我有 javascript 可以始终关注输入字段。当 div 可见时,我可以看到打字。当我隐藏 div 类型并使 div 再次可见时,我看不到任何变化。我怎样才能做到这一点,当 div 被隐藏时,它仍然需要用户输入?真的,如果除了躲藏还有别的办法,那就太好了。

<html>
<body>
<div id="diva">
<input name="geta" id="geta" type="text" onkeypress="javascript:geta.focus();" onKeyUp="javascript:geta.focus();" OnBlur="javascript:geta.focus();" OnChange="javascript:geta.focus();" />
</div>
<button onClick="javascript:change();">Show/Hide Div</button>
<script language="javascript" type="text/javascript">
<!--
 function change() {
    var div = document.getElementById('diva');
    if (div.style.display !== 'none') {
        div.style.display = 'none';
    }
    else {
        div.style.display = 'block';
    }
};
geta.focus();
// -->
</script>
</body>
</html>

使用 Jeffman 的想法修复副本:

<html>
<head>
<style>
input {
    position: absolute;
    left: -999em;
}
</style>
</head>
<body>
<input name="geta" id="geta" type="text" onkeypress="javascript:geta.focus();" onKeyUp="javascript:geta.focus();" OnBlur="javascript:geta.focus();" OnChange="javascript:geta.focus();" />
<button onClick="javascript:show();">Show</button><button onClick="javascript:hide();">Hide</button>
<script language="javascript" type="text/javascript">
<!--
 function hide() {
        document.getElementById('geta').style.position = 'absolute';
        document.getElementById('geta').style.left = '-999em';
    }
 function show() {
        document.getElementById('geta').style.position = 'absolute';
        document.getElementById('geta').style.left = '10em';
    }
geta.focus();
// -->
</script>
</body>
</html>
4

2 回答 2

1

您是否只是想将任何用户输入捕获到隐藏的输入字段?

如果是这样,您可以向文档添加一个 onkeyup 触发器,并为每个 keyup 修改隐藏的输入字段。

否则,一旦你隐藏了一个元素,它就会失去焦点。

简单的例子:

不知道你用的有没有 jQuery,所以这里有一个非常原生的简单解决方案,放在你的 head 标签里

document.onkeyup = function(e) {
    var input = document.getElementById('myinput');
    if (input.style.display == 'none') {
        input.value += String.fromCharCode(e.keyCode || e.which);
    }
};
于 2013-08-07T15:43:59.273 回答
0

我认为隐藏时无法输入文本字段。你的用例是什么?

于 2013-08-07T15:40:42.793 回答