웹 페이지가로드 될 때 포커스를 텍스트 상자로 자동 설정하는 방법은 무엇입니까?


답변:


245

jquery를 사용하는 경우 :

$(function() {
  $("#Box1").focus();
});

또는 프로토 타입 :

Event.observe(window, 'load', function() {
  $("Box1").focus();
});

또는 일반 자바 스크립트 :

window.onload = function() {
  document.getElementById("Box1").focus();
};

그러나 이것은 다른로드 핸들러를 대체한다는 점을 명심하십시오 .Google에서 addLoadEvent ()를 찾아서 교체하지 않고 onload 핸들러를 추가하는 안전한 방법을 찾으십시오.


3
body 요소에 핸들러를 넣지 않는 이유는 무엇입니까? 어떤 참조? 감사합니다
Alexander Torstling

7
자바 스크립트와 HTML을 분리하는 것이 훨씬 깨끗하기 때문입니다. HTML의 시각적 요소에 스크립팅 동작을 추가해야합니다.
Ben Scheirman

94

HTML에는 모든 양식 필드에 대한 autofocus속성 이 있습니다. Dive Into HTML 5 에는 좋은 자습서가 있습니다 . 불행히도 현재 10 미만의 IE 버전에서는 지원 되지 않습니다 .

HTML 5 속성을 사용하고 JS 옵션으로 폴백하려면 :

<input id="my-input" autofocus="autofocus" />
<script>
  if (!("autofocus" in document.createElement("input"))) {
    document.getElementById("my-input").focus();
  }
</script>

JS가 HTML 요소 아래에 있으므로 jQuery, onload 또는 이벤트 핸들러가 필요하지 않습니다.

편집 : 또 다른 장점은 일부 브라우저에서 JavaScript를 끈 상태로 작동하며 이전 브라우저를 지원하지 않으려는 경우 JavaScript를 제거 할 수 있다는 것입니다.

편집 2 : Firefox 4는 이제 autofocus속성을 지원하므로 IE는 지원하지 않습니다.


3
무엇입니까 autofocus="aufofocus"? 제공 한 모든 링크는 속성을 추가한다고 말합니다 autofocus.
Gerrat

6
XHTML과 HTML4 시절에는 attribute="value"부울 속성 에 일반적으로 사용되었습니다 . HTML5는 "빈 속성 구문"과 함께 제공되었으며 중복성을 떨어 뜨 렸습니다. 이제 우리는 할 수 있습니다<input checked disabled autofocus data-something>
dave1010

이 접근 방식이 마음에 듭니다 ... 해당 코드는 입력에 속합니다 ... 입력 및 붐을 제거하고 관련 코드가 바로 있습니다 ... 요즘 너무 길을 잃었습니다 ... 이제 전체 서클을 단순화하려고합니다. ...
서지

16

자바 스크립트를 사용해야합니다.

<BODY onLoad="document.getElementById('myButton').focus();">

@Ben은 이와 같은 이벤트 핸들러를 추가해서는 안된다는 점에 주목합니다. 다른 질문이지만이 기능을 사용하는 것이 좋습니다.

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

그런 다음 페이지에서 addLoadEvent를 호출하고 원하는 텍스트 상자에 포커스를 설정하는 함수를 참조하십시오.


14

텍스트 필드에 자동 초점을 작성하십시오. 이것은 간단하며 다음과 같이 작동합니다.

 <input name="abc" autofocus></input>

도움이 되었기를 바랍니다.


1
이것은 좋지만 문제는 슬라이딩 스타일의 단계가있는 경우 입력 유형이 예를 들어 3 단계 또는 4 단계에있는 경우 유용하지 않습니다.
Kobe Bryan

12

이 방법으로 jquery를 사용하면 쉽게 할 수 있습니다.

<script type="text/javascript">

    $(document).ready(function () {
        $("#myTextBoxId").focus();
    });

</script>

이 함수를 호출 $(document).ready().

DOM이 준비되면이 함수가 실행됨을 의미합니다.

READY 기능에 대한 자세한 내용은 http://api.jquery.com/ready/를 참조하십시오.


11

일반 바닐라 HTML 및 자바 스크립트 사용

<input type='text' id='txtMyInputBox' />


<script language='javascript' type='text/javascript'>
function SetFocus()
{
    // safety check, make sure its a post 1999 browser
    if (!document.getElementById)
    {
        return;
    }

    var txtMyInputBoxElement = document.getElementById("txtMyInputBox");

    if (txtMyInputBoxElement != null)
    {
        txtMyInputBoxElement.focus();
    }
}
SetFocus();
</script>

.net 프레임 워크와 asp.net 2.0 이상을 사용하는 사람들에게는 사소한 것입니다. 이전 버전의 프레임 워크를 사용하는 경우 위와 유사한 일부 자바 스크립트를 작성해야합니다.

OnLoad 핸들러 (일반적으로 Visual Studio와 함께 제공되는 스톡 페이지 템플리트를 사용하는 경우 page_load)에서 다음을 사용할 수 있습니다.

씨#

protected void PageLoad(object sender, EventArgs e)
{
    Page.SetFocus(txtMyInputBox);
}

VB.NET

Protected Sub PageLoad(sender as Object, e as EventArgs)

    Page.SetFocus(txtMyInputBox)

End Sub

(* 참고 코드 블록에서 제대로 렌더링을 거부했기 때문에 일반적으로 Page_Load 인 함수 이름에서 밑줄 문자를 제거했습니다. 마크 업 문서에서 밑줄을 사용하여 이스케이프 처리하지 않는 방법을 알 수 없었습니다.)

도움이 되었기를 바랍니다.


7

페이지에서 첫 번째로 표시되는 활성화 된 텍스트 필드를 선택하는 '가장 깨끗한'방법 인 IMHO는 jQuery를 사용하여 다음과 같은 작업을 수행합니다.

$(document).ready(function() {
  $('input:text[value=""]:visible:enabled:first').focus();
});

희망이 도움이 ...

감사...


6
<html>  
<head>  
<script language="javascript" type="text/javascript">  
function SetFocus(InputID)  
{  
   document.getElementById(InputID).focus();  
}  
</script>  
</head>  
<body onload="SetFocus('Box2')">  
<input id="Box1" size="30" /><br/>  
<input id="Box2" size="30" />  
</body>  
</html>  

5

일반적인 조언으로, 주소 표시 줄에서 포커스를 훔치지 않는 것이 좋습니다. ( 제프는 이미 그것에 대해 이야기했습니다. )

웹 페이지를로드하는 데 시간이 걸릴 수 있습니다. 즉, 사용자가 pae URL을 입력 한 후 시간이 오래 걸릴 수 있습니다. 그런 다음 페이지를로드하고 포커스를 도용하여 텍스트 상자에 넣는 동안 그는 마음을 바꾸고 URL 입력으로 돌아갈 수있었습니다.

그것이 Google을 시작 페이지로 제거한 유일한 이유입니다.

물론 네트워크 (로컬 네트워크)를 제어하거나 포커스 변경이 중요한 유용성 문제를 해결하는 것이라면 방금 말한 모든 것을 잊어 버립니다. :)


어떤 경우에는 동의합니다. 그러나 특정 경우에는 하나의 입력 상자 만있는 작은 div가 나타납니다. 사용자는 무언가를 입력해야하며 즉시 div를 닫아 초점을 설정하는 것이 편리합니다.
Mark Biek

2

약간 다른 문제가있었습니다. 나는 원했지만 텍스트가 크로스 브라우저로 유지 autofocus되기를 원했습니다 placeholder. 일부 브라우저는 placeholder필드에 초점을 맞추 자마자 텍스트를 숨기고 일부는 유지합니다. 자리 표시자가 교차 브라우저를 유지해야하는데, 이로 인해 이상한 부작용이 발생하거나 사용을 중단해야합니다autofocus 합니다.

그래서 body 태그에 입력 된 첫 번째 키를 듣고 해당 키를 대상 입력 필드로 리디렉션했습니다. 그런 다음 관련된 모든 이벤트 처리기가 정리되어 깨끗하게 유지됩니다.

var urlInput = $('#Url');

function bodyFirstKey(ev) {
    $('body').off('keydown', bodyFirstKey);
    urlInput.off('focus', urlInputFirstFocus);

    if (ev.target == document.body) {
        urlInput.focus();
        if (!ev.ctrlKey && !ev.metaKey && !ev.altKey) {
            urlInput.val(ev.key);
            return false;
        }
    }
};
function urlInputFirstFocus() {
    $('body').off('keydown', bodyFirstKey);
    urlInput.off('focus', urlInputFirstFocus);
};

$('body').keydown(bodyFirstKey);
urlInput.focus(urlInputFirstFocus);

https://jsfiddle.net/b9chris/qLrrb93w/


0

autofocus입력 요소 를 설정할 수 있습니다

<input type="text" class="b_calle" id="b_calle" placeholder="Buscar por nombre de calle" autofocus="autofocus">

-1

ASP.NET을 사용하는 경우 사용할 수 있습니다

yourControlName.Focus()

서버의 코드에서 페이지에 적절한 JavaScript를 추가합니다.

다른 서버 측 프레임 워크는 동등한 방법을 가질 수 있습니다.


-3

아래 코드를 사용하십시오. 나를 위해 작동합니다

jQuery("[id$='hfSpecialty_ids']").focus()
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.