2013-08-07 73 views
0

我正在開發一個項目,我需要一個隱藏的輸入字段來接受用戶輸入。隱藏輸入字段並仍然採取用戶輸入

我有JavaScript的地方總是專注於輸入字段。當div可見時,我可以看到打字。當我隱藏div類型並使div再次可見時,我沒有看到任何更改。我如何做到這一點,當div被隱藏時,它仍然需要用戶輸入?真的,如果除了藏身之外還有另一種方式,那會很棒。使用Jeffman的想法

<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> 

固定副本:

<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> 
+1

也許我錯過了什麼,但不清楚你想達到什麼目的。而不是告訴我們你已經實現了什麼,告訴我們你試圖達到什麼目的,因爲我猜測你是以錯誤的方式去做 –

+0

嘗試對輸入進行定位,使其位於其他東西的後面,比如圖像或其他東西。或者嘗試使用負座標進行定位,使其不在視口中。 – 2013-08-07 15:43:28

+0

謝謝傑夫曼。你的想法並不困難。我發佈了一份固定副本供其他人試用,如果他們想看的話。 –

回答

0

我不認爲這是可能的,當它是隱藏鍵入的文本字段。你的用例是什麼?

+0

我需要捕獲一個用戶輸入,如果按下某個系列的按鍵,它會在不使用JQuery的情況下觸發一個javascript函數。 –

+0

在這種情況下,嘗試將按鍵綁定到'document'對象。 – Samer

1

你只是想讓它如此任何用戶輸入被捕獲到隱藏的輸入字段?

如果是這樣,您可以添加onkeyup觸發器到文檔,併爲每個鍵入,修改隱藏的輸入字段。

否則,一旦你隱藏了一個元素,它將失去焦點。

簡單的例子:

我不知道,如果你使用jQuery,所以這裏是一個非常原始,簡單的解決方案,把你的頭標記

document.onkeyup = function(e) { 
    var input = document.getElementById('myinput'); 
    if (input.style.display == 'none') { 
     input.value += String.fromCharCode(e.keyCode || e.which); 
    } 
}; 
+0

我喜歡這種方法。如果輸入被隱藏,那麼我必須在哪裏放置onKeyUp觸發器,以便用戶在不查看源代碼的情況下看到它? –

+0

查看答案編輯 – crowebird