2012-06-25 4 views
7

Я пытаюсь установить фокус на скрытое текстовое поле. Я хочу, чтобы, когда тело или div, содержащие загружаемые текстовые поля, фокус должен находиться в конкретном текстовом поле, так что любой вход с клавиатуры или любого другого устройства попадает в этот элемент. Я пробовал следующий код без эффекта:пытается установить фокус на скрытое текстовое поле

<body> 
    <input type="text" id="exp" maxlength="16"></input> 
    <input type="text" id="exp2" maxlength="16"></input> 
    <script> 
     $("#exp").hide(); 
     $("#exp").focus(); 
     $("#exp2").keypress(function(){ 
      alert($("#exp").val()); 
     }); 
    </script> 
</body> 

делать какие-либо предложения. jquery будет предпочтительнее.

+1

Скрытые элементы не могут получить фокус, по дизайну. Что именно вы ожидаете? Вы можете установить фокус, когда он все еще виден, а затем спрятать его. –

+1

Скрытый элемент имеет отображение: нет; так как они могут быть сфокусированы. Barbosa –

+0

Я не могу себе представить, почему вы хотели бы это сделать. Плюс входные теги являются закрывающими тегами.

ответ

12

Вы не можете установить фокус в текстовое поле, которое скрыто в методе hide. Вместо этого вам нужно переместить его с экрана.

<body> 
<!-- it's better to close inputs this way for the sake of older browsers --> 
<input type="text" id="exp" maxlength="16" /> 
<input type="text" id="exp2" maxlength="16" /> 
<script> 
// Move the text box off screen 
$("#exp").css({ 
    position: 'absolute', 
    top: '-100px' 
}); 
$("#exp").focus(); 
$("#exp2").keypress(function(){ 
alert($("#exp").val()); 
}); 
</script> 
</body> 
+0

, делая это, #exp никогда не сможет вернуться в прежнее место. –

+0

Обычно вы не хотите скрытое текстовое поле, которое используется для захвата ключей, чтобы вернуться в поле зрения. Но вы можете вернуть его на прежнее место: '$ ('# exp'). Css ('position', 'static');' –

+0

Это соответствует моим требованиям ... хотя это не то, что я искал. .. это sems немного из коробки решение ....:) ... спасибо anyways ... –

1
visibility:hidden; 
position: absolute; 

Работает в Chrome 53, и кажется чище, чем пытаться сместить элемент закадровый, как в ответ Натан Уолла.

Смежные вопросы