2010-01-24 17 views
27

Stackoverflow'da 'Soru sorma' düğmesine tıkladığınızda bir metin görürsünüz. "Programlama sorunuz nedir? Açıklayıcı olun."İmleci giriş alanının başına mı taşıyorsunuz?

Aynı şeyi istiyorum ve bunun için ihtiyacım olan şey, imlecimi metin alanının başına taşımaktır. bunu jquery ile nasıl yaparım?

+1

istendi http://stackoverflow.com/questions/2984311/delete-default-value-of-an-input-text-on-click içinde cevaplar (IMO ve daha iyi) Ek vardır Bundan 5 ay sonra. –

+0

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

+0

Ayrıca, burada iyi bir cevap: https://stackoverflow.com/a/8190890/1617737 –

cevap

19

o bir overkill, ancak bu işlevler bir giriş alanının bir bölümünü seçmek için faydalıdır olabilir.

Aşağıdaki kod, imleci ikinci alanın ilk karakterine yerleştirir. Eğer> stackoverflow kaynak koduna bakmak soru sorabilir

<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

Bu mükemmel. –

8

focus() yöntemini kullanabilirsiniz. JQuery'yi hatırlarsam, bunun gibi: $ ("# question_input_field_id").

Güncellemesi (Sorunuzu doğru var ise): başında imleci ayarlama :

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

eğer Bir metin alanına bir metin aldım, sonra odak kullanırsam, imleç metnin sonunda metin alanının sonunda olacaktır. Metinden önce başında olmasını istiyorum. – ajsie

+0

Anladım. Orijinal cevabımı güncelledi. Firefox ile çalışır (örn. Gecko tarayıcıları), başkaları hakkında emin değilim. – Sejanus

+9

jQuery nesnesini setSelectionRange ile kullanamazsınız. Bu işe yaramaktadır: $ ("# question_input_field_id") [0] .setSelectionRange (0,0); – Andre

6

, bu bulacaksınız:

<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> 

gerçekten oluyor bir CSS kodu girişi üstünden <span class="edit-field-overlay"> hamle yaptı ki kutuya ve gerektiğinde saklan ... ve sadece Sejanus'un önerdiği şeyi yap.

+0

haha..that dürüst olmak için 'lame' idi ... ama iyi ... o işe yaradı :) – ajsie

+0

hehe .. Bazen, bir şeyleri göz ardı etmiyorsanız ... işler kolay olabilir .. sadece göze hile yapmalısın .. :) – Reigel

+0

tıpkı sihir gibi :) – ajsie

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

Bu kod girişin değerini önbelleğe alır, temizler ve ardından aynı değeri yeniden uygular. Bütün bunlar her zaman odaklanmak girişten ayrılır. Bunun soruyu nasıl cevaplayacağından emin değilim. –

İlgili konular