JQuery를 사용하여 입력 필드에 초점을 설정하는 방법


106

다음 HTML 구조가 주어지면 :

<div class="wrapper">
    <div class="top">
        <a href="http://example.com" class="link">click here</a>
    </div>
    <div class="middle">
        some text
    </div>
    <div class="bottom">
        <form>
            <input type="text" class="post">
            <input type="submit">
        </form>
    </div>
<div>

페이지에서 여러 번 반복 .bottom됩니다. 사용자가 .topdiv 의 링크를 클릭 할 때 div 의 입력 필드에 포커스를 설정하려면 어떻게해야 합니까?

현재 .bottom아래 JQuery 코드를 사용하여 클릭 시 div가 성공적으로 나타나도록 만들고 있지만 동시에 입력 필드에 포커스를 설정하는 방법을 알아낼 수없는 것 같습니다.

$('.link').click(function() {
    $(this).parent().siblings('div.bottom').show();
});

감사!


귀하의 질문에 대한 답변이 제공되었지만 return false;이벤트 콜백이 끝날 때도 실행 중이라고 가정합니다 . 아니면 function(e) { e.preventDefault(); ..... }? 그렇지 않은 경우 브라우저는 콜백을 실행 한 후 해당 페이지로 이동합니다.
simshaun jul.

@simshaun은 어느 페이지로 이동합니까?
롤링 스톤

글쎄, 귀하의 예에서 해당 링크를 클릭하면 example.com으로 이동합니다 .
simshaun jul.

오, 맞아요. 고마워요!
롤링 스톤

답변:


135

첫 번째 입력 필드에 초점을 설정하려면 다음을 시도하십시오.

$(this).parent().siblings('div.bottom').find("input.post").focus();

1
input& 사이의 공백 :first. jQuery는 자동으로 연결됩니까? 나는 항상 그것이되어야한다고 생각했습니다 input:first.
simshaun jul.

예, 어느 쪽이든 작성할 수 있습니다. input:first다른 방법으로 읽는 것이 더 쉬울 것 같지만, 나는 그것을 쓰는 더 공식적인 방법이라고 생각합니다. 하지만 어쩌면 그 : 그냥 날입니다
저스틴 이디어

너무 익숙해서 공간을 보면 자동으로 "자식 요소"라고 생각하고 혼란스러워하는 데 시간이 걸린다고 생각합니다. 하지만 그게 바로 나야. 어느 쪽이든 작동하는 것이 멋지다.
simshaun jul.

@justin 나는 실제로 작동하도록 약간 조정해야 $(this).parent().siblings('div.bottom').find("input.post").focus();했지만 .find()내가 찾던 선택기입니다. 흥미롭게 input :firstinput:first작동 하지 않았습니다 .
롤링 스톤

흥미로운 것은 아마도 입력이 form태그 내에 있기 때문일 것입니다 . 어쨌든, 일하러 가셔서 기쁩니다!
Justin Ethier 2011


7

Justin의 대답은 저에게 효과가 없었습니다 (Chromium 18, Firefox 43.0.1). jQuery는 .focus()시각적 하이라이트를 생성하지만 텍스트 커서가 필드에 나타나지 않습니다 (jquery 3.1.0).

https://www.sitepoint.com/jqueryhtml5-input-focus-cursor-positions/ 에서 영감을 받아 입력 필드 에 autofocus 속성을 추가했습니다 .

function addfield() {
    n=$('table tr').length;
    $('table').append('<tr><td><input name=field'+n+' autofocus></td><td><input name=value'+n+'></td></tr>');
    $('input[name="aa"'+n+']').focus();
}

1
나를 위해 일했습니다. 더 간단한 버전은 다음과 같습니다 : $ ( '. class input'). focus (); $ ( '. class input'). prop ( 'autofocus');
raison
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.