2010-01-24 22 views
27

po kliknięciu "Zadaj pytanie" tutaj w Stackoverflow pojawi się tekst "Jakie jest Twoje pytanie programistyczne? Opisowe."przenieść kursor na początek pola wprowadzania?

Chcę tego samego i wszystko, czego potrzebuję, to przesunięcie kursora na początek pola tekstowego. jak to zrobić z jquery?

+1

Istnieje dodatkowy (i lepiej, IMO) odpowiedzi w http://stackoverflow.com/questions/2984311/delete-default-value-of-an-input-text-on-click, który został poproszony 5 miesięcy po tym. –

+0

http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area – ripper234

+0

Ponadto, dobra odpowiedź tutaj: https://stackoverflow.com/a/8190890/1617737 –

Odpowiedz

19

może być, że to przesada, ale funkcje te są pomocne, aby wybrać część pola wejściowego.

Poniższy kod umieszcza kursor na pierwszym znaku drugiego pola.

<html> 
<head> 
    <title>so</title> 
</head> 
<body> 
    <input value="stack" /> 
    <input value="overflow" /> 
    <script> 
     var inp = document.getElementsByTagName('INPUT')[1]; 
     if (inp.createTextRange) { 
      var part = inp.createTextRange(); 
      part.move("character", 0); 
      part.select(); 
     } else if (inp.setSelectionRange) { 
      inp.setSelectionRange(0, 0); 
     } 
     inp.focus(); 
    </script> 
</body> 
</html> 
+0

To jest idealne. –

8

Możesz użyć metody focus(). Jeśli przypominam jQuery, to jest to: $ ("# question_input_field_id"). Focus(); (Jeśli mam pytanie prawej)

Aktualizacja: Ustawianie kursora na początku:

$("#question_input_field_id").focus(); 
$("#question_input_field_id").get(0).setSelectionRange(0,0); 
+0

jeśli ja Mam tekst w polu tekstowym, a jeśli użyję fokusu, kursor znajdzie się na końcu pola tekstowego po tekście. chcę, żeby było na początku przed tekstem. – ajsie

+0

Rozumiem. Zaktualizowano moją oryginalną odpowiedź. Działa z Firefoksem (tj. Przeglądarkami Gecko), nie jest pewien innych. – Sejanus

+9

Nie można użyć obiektu jQuery za pomocą metody setSelectionRange. To zadziała: $ ("# question_input_field_id") [0] .setSelectionRange (0,0); – Andre

6

jeśli zajrzeć do kodu źródłowego stackoverflow> zadać pytanie, znajdziesz to:

<table style="width:668px"> 
    <tr> 
     <td style="width:50px"><label for="title">Title</label></td> 
     <td style="padding-left:5px"><input id="title" name="title" type="text" maxlength="300" tabindex="100" style="width:610px" value=""> 
       <span class="edit-field-overlay">What's your programming question? Be descriptive.</span> 
     </td> 
    </tr> 
</table> 

co naprawdę się dzieje jest to, że kod CSS dokonał <span class="edit-field-overlay"> ruch w górę wejścia w razie potrzeby pokaż ... i po prostu rób to, co sugerował Sejanus.

+0

haha ​​.. to było dość "lame", aby być szczerym ... ale cóż ... zadziałało :) – ajsie

+0

hehe .. czasami, rzeczy mogą być łatwe ... jeśli po prostu nie przeoczasz problemu ... musisz tylko oszukać oko ... :) – Reigel

+0

tak samo jak magia :) – ajsie

-1
$('#txtYourTextBox').blur(function() { 
    var val = $("#txtYourTextBox").val(); 
    $("#txtYourTextBox").val(''); 
    setTimeout(function() { $("#txtYourTextBox").val(val); }, 20); 
}); 
+0

Wygląda na to, że ten kod buforuje wartość wejściową, czyści ją, a następnie ponownie stosuje tę samą wartość. Wszystko to dzieje się za każdym razem, gdy fokus opuszcza dane wejściowe. Nie jestem pewien, jak to ma odpowiedzieć na pytanie. –

Powiązane problemy