2010-01-24 16 views
27

जब आप स्टैक ओवरफ्लो में यहां 'प्रश्न पूछें' पर क्लिक करते हैं तो आपको एक टेक्स्ट "आपका प्रोग्रामिंग प्रश्न क्या है? वर्णनात्मक हो।"कर्सर को इनपुट फ़ील्ड की शुरुआत में ले जाएं?

मुझे वही चीज़ चाहिए और मुझे इसकी आवश्यकता है कि मेरे कर्सर को टेक्स्ट फ़ील्ड की शुरुआत में स्थानांतरित किया जाए। मैं jquery के साथ ऐसा कैसे करूँ?

+1

अतिरिक्त कर रहे हैं (और बेहतर, IMO) http://stackoverflow.com/questions/2984311/delete-default-value-of-an-input-text-on-click में जवाब है, जो कहा गया था इस के 5 महीने बाद। –

+0

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

+0

इसके अलावा, एक अच्छा जवाब यहाँ: https://stackoverflow.com/a/8190890/1617737 –

उत्तर

19

हो सकता है कि एक overkill है, लेकिन इन कार्यों एक इनपुट फ़ील्ड के एक हिस्से को चुनने के लिए सहायक होते हैं।

नीचे दिया गया कोड कर्सर को दूसरे फ़ील्ड के पहले चार में रखता है।

<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

के लिए अपरिभाषित है यह सही है। –

8

आप फोकस() विधि का उपयोग कर सकते हैं। अगर मुझे jQuery याद है, तो इसकी तरह: $ ("# question_input_field_id")। फोकस();

अद्यतन (अगर मैं आपके सवाल का अधिकार मिल गया): शुरुआत में कर्सर की स्थापना:

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

अगर मैं टेक्स्ट फ़ील्ड में एक टेक्स्ट मिला, यदि मैं फोकस का उपयोग करता हूं तो कर्सर पाठ के बाद टेक्स्ट फ़ील्ड के अंत में होगा। मैं इसे पाठ से पहले शुरुआत में होना चाहता हूं। – ajsie

+0

समझ गया। मेरा मूल उत्तर अपडेट किया गया। फ़ायरफ़ॉक्स (यानी गेको ब्राउज़र) के साथ काम करता है, दूसरों के बारे में निश्चित नहीं है। – Sejanus

+9

आप jQuery ऑब्जेक्ट का उपयोग setSelectionRange के साथ नहीं कर सकते हैं। यह काम करेगा: $ ("# question_input_field_id") [0] .setSelectionRange (0,0); – Andre

6

यदि आप सवाल पूछ stackoverflow के स्रोत कोड पर गौर>, तो आप इस मिलेगा:

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

क्या वास्तव में हो रहा है कि एक सीएसएस कोड इनपुट के शीर्ष पर <span class="edit-field-overlay"> चाल चल दी है जब आवश्यक हो तो बॉक्स और छुपाएं दिखाएं ... और बस सेजानस ने सुझाव दिया।

+0

हाहा..यह ईमानदार होने के लिए सुंदर 'लंगड़ा' था ... लेकिन अच्छा ... यह काम किया :) – ajsie

+0

हे .. कभी-कभी, चीजें आसान हो सकती हैं ... यदि आप किसी समस्या पर नजरअंदाज नहीं करते हैं .. आपको सिर्फ आंखों की चाल चलनी है .. :) – Reigel

+0

बस जादू की तरह :) – ajsie

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

ऐसा लगता है कि यह कोड इनपुट के मान को कैश करता है, इसे साफ़ करता है, फिर उसी मान का पुन: उपयोग करता है। जब भी फोकस इनपुट छोड़ देता है यह सब हो रहा है। मुझे यकीन नहीं है कि इस सवाल का जवाब कैसे दिया जाना चाहिए। –

संबंधित मुद्दे