2012-12-20 3 views
0

사용자가 무엇을 하든지간에 항상 포커스가 필요한 텍스트 필드가 있습니다.항상 텍스트 필드에 포커스를 유지하는 방법 (MVC 4 C#)

나는이 작업을 수행하여 부하에 텍스트 필드를 활성화 한 :

<html> 
<head> 
    < script type ="text/javascript" src ="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></ script> 
    < script type ="text/javascript"> 
    $(function() { 
     $("#myTextBox2").focus(); 
    }); 
    </ script> 
</head> 
< body> 
    < div> 
     < input type ="text" id ="myTextBox"> 
     < input type ="text" id ="myTextBox2"onblur="var that= this; setTimeout(function() { that.focus(); }, 0);"> 
    </ div> 
</ body> 
</html> 

코드를 시도 할 때 나는 탭 버튼을 누르면 내가 멀리 myTextBox2에서 탭 여전히 수 있지만, 내가 함께합니다 MyTextBox 클릭 어차피 위 내 마우스 (오른쪽).

사용자가 버튼을 누르거나 사이트의 아무 곳이나 클릭하면 텍스트 필드가 선택되어 초점을 맞춰야합니다. 어떻게 이것을 완전히 시행 할 수 있습니까?

편집 :

$(document).keydown(function(objEvent) { 
     if (objEvent.keyCode == 9) { //tab pressed 
      objEvent.preventDefault(); // stops its action 
     } 
    }) 

신용 : 다음 Lock tab key with javascript?

답변

4

다음과 같은 코드로 모든 시간에 텍스트 필드에 포커스를 유지 할 수 있습니다

HTML :

<form> 
    <input type="text" name="name" id="focus" /> 
    <input type="text" name="name2" /> 
    <input type="text" name="name3" /> 
    <input type="text" name="name4" /> 
</form> 

JS : JsFiddle에

$(document).ready(function() { 
    $("#focus").focus().bind('blur', function() { 
     $(this).focus();    
    }); 

    $("html").click(function() { 
     $("#focus").val($("#focus").val()).focus(); 
    }); 

    //disable the tab key 
    $(document).keydown(function(objEvent) { 
     if (objEvent.keyCode == 9) { //tab pressed 
      objEvent.preventDefault(); // stops its action 
     } 
    })  
});​ 

예 : Click!

텍스트 필드의 값을 대체하여 강제로/배치를 트리거해야했습니다. 초점을 맞춘 필드에 커서를 놓습니다.

희망이 도움이됩니다.

+1

멋지고 빠릅니다. 그러나 마우스 클릭으로 다른 텍스트 상자에 집중하려고 할 때마다 텍스트 상자가 포커스를 되 찾지 만 텍스트가 선택됩니다. 텍스트를 선택해서는 안되며 포인터는 텍스트의 끝을 가리켜 야합니다.BTW 나는이 질문을하지 않았다. – KULKING

+0

또한 포커스를 마지막 (네 번째) 텍스트 필드로 변경하면 탭에서 멀리 이동할 수 있습니다. 나는 그것 후에 다른 텍스트가있는 한 작동하는 것 같다. – mdc

+1

@KULKING thx, 답변을 업데이트했습니다. 'select()'를 삭제하고 textbox 값을 재설정하여 텍스트 필드와 텍스트의 끝에 커서를 강제로 적용합니다. –

0

나는 것 :

내 코드와 스벤로 대답 헤더이 추가 트릭을 할 것 같다

1) 페이지로드시 자동으로 요소 초점 맞추기 (이미 완료)

2) # myTextBox2에서 키 누름 이벤트 핸들러를 만들고 "실제"입력 이벤트 핸들러를 제외한 모든 문자를 버립니다. 실제로 입력 할 수있는 동일한 입력에 초점을 맞추는 # myTextBox2에 onblur 이벤트 핸들러를 만듭니다. (예 : 이미 완료되었으므로 입력해야합니다.))에있는 스크립트

4) 완성을 위해 입력에 중점을 둔 모든 X 마이크로 초를 확인하는 페이지에 간격을 넣으십시오. 그렇지 않은 경우 입력을 집중시킵니다. 이것은 선택 사항입니다.

함수 호출이 실제로 입력에 초점이 맞지 않았 음을 감지하고 포커스를 지정해야하는 경우 포커스는 입력의 시작 부분을 가리키고 사용자 입력이 입력 필드의 시작 부분부터 시작하십시오. 입력 내용은 파기되지 않지만 사용자는 다시 초점을 맞춘 후 입력 끝으로 이동해야합니다.

이벤트 처리기를 만드는 데 도움이 필요하면 질문하십시오.

관련 문제