2009-10-20 14 views
186

Jest to prawdopodobnie bardzo proste, ale ktoś mógłby mi powiedzieć jak dostać się migający kursor w polu tekstowym na stronie obciążenia?Jak skupić się na polu tekstowym wprowadzania formularza przy ładowaniu strony za pomocą jQuery?

+81

Nie przeszkadza proste pytania tutaj. – DOK

+0

Sprawdź odpowiedź od sohail arif na poniższy link: http://stackoverflow.com/questions/18054459/how-to-place-the-cursor-auto- focus-in-text-box-when-a-page-gets- załadowany-bez –

Odpowiedz

292

Ustaw ostrość na pierwszym polu tekstowym:

$("input:text:visible:first").focus(); 

to robi też pierwsze pole tekstowe, ale można zmienić [0] do innego indeksu:

$('input[@type="text"]')[0].focus(); 

Lub można użyć ID:

$("#someTextBox").focus(); 
+15

"Jak ... ** przy użyciu Jquery **" – pjmil

+2

Jeśli używasz okna dialogowego, zobacz tę odpowiedź, jeśli powyższe nie działa http://stackoverflow.com/a/20629541/966609 –

+1

'$ ('input [ type = "text"] '). get (0) .focus(); '... pracował dla mnie – Rav

24

Sure:

<head> 
    <script src="jquery-1.3.2.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(function() { 
      $("#myTextBox").focus(); 
     }); 
    </script> 
</head> 
<body> 
    <input type="text" id="myTextBox"> 
</body> 
11

HTML:

<input id="search" size="10" /> 

jQuery:

$("#search").focus(); 
+0

jeśli używasz html5, po prostu dodaj atrybut "autofocus" do elementu wejściowego? –

15

Pomyśl o swoim interfejsie użytkownika przed wami Zrób to. Zakładam (chociaż żadna z odpowiedzi tak nie powiedziała), że zrobisz to, gdy dokument zostanie załadowany za pomocą funkcji jQuery's ready(). Jeśli użytkownik już skupił się na innym elemencie przed załadowaniem dokumentu (co jest absolutnie możliwe), to bardzo irytuje, że skradziono im ostrość.

Można to sprawdzić poprzez dodanie onfocus atrybuty każdego z elementów <input> nagrywać czy użytkownik już koncentruje się na polu formularza, a następnie nie kradzież ostrość jeśli mają:

var anyFieldReceivedFocus = false; 

function fieldReceivedFocus() { 
    anyFieldReceivedFocus = true; 
} 

function focusFirstField() { 
    if (!anyFieldReceivedFocus) { 
     // Do jQuery focus stuff 
    } 
} 


<input type="text" onfocus="fieldReceivedFocus()" name="one"> 
<input type="text" onfocus="fieldReceivedFocus()" name="two"> 
+0

dzięki za to. to jest dobry dodatek! – chris

+1

Twoja perspektywa jest nie tylko poprawna technicznie, ale także Twoja uwaga dotycząca najlepszego UX jest znakomita. Brawo! – Maviza101

7

Przepraszamy za wpadając na stare pytanie. Znalazłem to przez google.

Warto również zauważyć, że możliwe jest użycie więcej niż jednego selektora, dzięki czemu można wybrać dowolny element formularza, a nie tylko jeden określony typ.

np.

$('#myform input,#myform textarea').first().focus(); 

ta skupi się pierwsze wejście lub textarea stwierdzi, i oczywiście można dodać inne selektorów do mieszanki, jak również. Hnady, jeśli nie możesz być pewien, że dany typ elementu jest pierwszy, lub jeśli chcesz czegoś trochę ogólnego/wielokrotnego użytku.

+0

Doskonała sugestia @Andrew. – DOK

3

miejsce po wejściu

<script type="text/javascript">document.formname.inputname.focus();</script> 
16

Dlaczego wszyscy przy użyciu jQuery na coś prostego, jak to.

<body OnLoad="document.myform.mytextfield.focus();"> 
+1

+1 Najprostszy sposób! –

+2

Ponieważ pytanie jest oznaczone jako jQuery. –

4

To co ja wolę używać:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#fieldID").focus(); 
    }); 
</script> 
+1

To zły sposób na robienie rzeczy, skupienie się na obciążeniu dokumentu przy użyciu atrybutu "autofokus", który jest dostarczany przez HTML5 – OverCoder

62

Można użyć HTML5 autofocus do tego. Nie potrzebujesz jQuery ani innego JavaScript.

<input type="text" name="some_field" autofocus> 

Uwaga: to nie zadziała na IE9 i niżej.

+0

autofokus nie działa w IE11 ani https://stackoverflow.com/questions/34068302/autofocus-attribute -on-input-field-not-working-in-ie-11 –

0

Proste i najłatwiejszym sposobem osiągnięcia tego celu

$('#button').on('click', function() { 
    $('.form-group input[type="text"]').attr('autofocus', 'true'); 
}); 
Powiązane problemy