दिलचस्प पोस्ट
गुना बनाम गुठली (या गुठली) की इंप्रेशन लगातार जावा एफएफ़ कार्यकर्ता थ्रेड में UI अपडेट करें कोणीय में HTTP अनुरोध के दौरान स्पिनर जीआईआई दिखा रहा है रूबी में मैं अनन्य यादृच्छिक संख्याओं की एक सूची कैसे प्राप्त करूं? आईओएस: दो तिथियों की तुलना करें दो अनुप्रयोगों के बीच स्मृति साझा करना मैं CSS या पाठ का उपयोग कैसे कर सकता हूँ? Emacs का प्रयोग करके पाठ फ़ाइलों में लगातार ढूंढ और प्रतिस्थापित करने के लिए पहले से ही खुले नहीं हैं लिनक्स में स्थानीय फ़ंक्शन कॉल्स का पता लगाने के लिए उपकरण सी + + में पोस्ट-सर्किट से अधिक तेजता सच है? यदि हां, तो यह क्यों है? RegExp के exec () फ़ंक्शन और स्ट्रिंग के मैच () फ़ंक्शन में क्या अंतर है? त्रुटि प्राप्त करना: 'त्रुटि: SSL त्रुटि: SELF_SIGNED_CERT_IN_CHAIN' npm का उपयोग करते समय एसएसएच पायथन का उपयोग करने का सबसे आसान तरीका क्या है? पीजी अपरिभाषित त्रुटि संबंध उपयोगकर्ता मौजूद नहीं है पायथन में एक शब्दकोश में एक सूची को परिवर्तित करें

क्लिक किए जाने पर HTML पाठ इनपुट के सभी पाठ को चुनना

मेरे पास एचटीएमएल वेबपेज में एक टेक्स्ट बॉक्स प्रदर्शित करने के लिए निम्नलिखित कोड है I

<input type="text" id="userid" name="userid" value="Please enter the user ID" /> 

जब पृष्ठ प्रदर्शित होता है, तो टेक्स्ट में कृपया यूजर आईडी संदेश दर्ज करें । हालांकि, मुझे पता चला कि सभी पाठ का चयन करने के लिए उपयोगकर्ता को 3 बार क्लिक करना होगा (इस मामले में यह यूजर आईडी दर्ज करें )।

क्या पूरे पाठ को केवल एक क्लिक के साथ चुनना संभव है?

संपादित करें:

क्षमा करें, मैं यह कहना भूल गया: मुझे इनपुट type="text" उपयोग करना चाहिए

वेब के समाधान से एकत्रित समाधान "क्लिक किए जाने पर HTML पाठ इनपुट के सभी पाठ को चुनना"

आप इस जावास्क्रिप्ट स्निपेट का उपयोग कर सकते हैं:

 <input onClick="this.select();" value="Sample Text" /> 

लेकिन जाहिरा तौर पर यह मोबाइल सफारी पर काम नहीं करता है। उन मामलों में आप उपयोग कर सकते हैं:

 <input onClick="this.setSelectionRange(0, this.value.length)" value="Sample Text" /> 

पहले पोस्ट किए गए समाधानों में दो क्वार्क हैं:

  1. क्रोम में चयन के माध्यम से। चयन () छड़ी नहीं है – थोड़ा समय समाप्त जोड़कर इस समस्या को हल करता है
  2. फ़ोकस के बाद कर्सर को वांछित बिंदु पर रखना असंभव है

यहां एक पूरा समाधान है जो फोकस पर सभी पाठ का चयन करता है, लेकिन फ़ोकस के बाद एक विशिष्ट कर्सर बिंदु चुनने की अनुमति देता है।

  $(function () { var focusedElement; $(document).on('focus', 'input', function () { if (focusedElement == this) return; //already focused, return so user can now place cursor at specific point in input. focusedElement = this; setTimeout(function () { focusedElement.select(); }, 50); //select all text in any field on focus for easy re-entry. Delay sightly to allow focus to "stick" before selecting. }); }); 

एचटीएमएल (आपको प्रत्येक इनपुट पर क्लिक करना होगा जो आप चाहते हैं कि वह पेज पर काम करे)

  <input type="text" value="click the input to select" onclick="this.select();"/> 

या बेहतर विकल्प

jQuery (यह पृष्ठ पर हर पाठ इनपुट के लिए काम करेगा, अपने html को बदलने की आवश्यकता नहीं है):

 <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script> <script type="text/javascript"> $(function(){ $(document).on('click','input[type=text]',function(){ this.select(); }); }); </script> 

मुझे पता है यह पुराना है, लेकिन सबसे अच्छा विकल्प अब संभव हो तो नए placeholder HTML विशेषता का उपयोग करना है:

 <input type="text" id="userid" name="userid" placeholder="Please enter the user ID" /> 

यह पाठ को दिखाने के लिए कारण होगा जब तक कोई मान दर्ज नहीं किया जाता है, पाठ या स्पष्ट इनपुट का चयन करने की आवश्यकता को समाप्त कर देता है

सूचीबद्ध उत्तरों मेरे अनुसार आंशिक हैं मैंने दो उदाहरणों के नीचे लिंक किया है कि यह कैसे कोनाल में और JQuery के साथ करना है।

इस समाधान में निम्नलिखित विशेषताएं हैं:

  • JQuery, सफारी, क्रोम, आईई, फ़ायरफ़ॉक्स आदि का समर्थन करने वाले सभी ब्राउज़रों के लिए काम करता है।
  • फोनगैप / कॉर्डोवा के लिए काम करता है: एंड्रॉइड और आईओएस
  • अगले धब्बा तक ध्यान केंद्रित होने के बाद केवल एक ही बार चुनता है और फिर फ़ोकस करें
  • एकाधिक इनपुट का उपयोग किया जा सकता है और यह गड़बड़ नहीं करता है
  • कोणीय निर्देश के पास महान फिर से उपयोग किया गया है, बस डायरेक्टिव सेले-ऑल-ऑन-क्लिक चुनें
  • JQuery आसानी से संशोधित किया जा सकता है

JQuery: http://plnkr.co/edit/VZ0o2FJQHTmOMfSPRqpH?p=preview

 $("input").blur(function() { if ($(this).attr("data-selected-all")) { //Remove atribute to allow select all again on focus $(this).removeAttr("data-selected-all"); } }); $("input").click(function() { if (!$(this).attr("data-selected-all")) { try { $(this).selectionStart = 0; $(this).selectionEnd = $(this).value.length + 1; //add atribute allowing normal selecting post focus $(this).attr("data-selected-all", true); } catch (err) { $(this).select(); //add atribute allowing normal selecting post focus $(this).attr("data-selected-all", true); } } }); 

कोणीय: http://plnkr.co/edit/llcyAf?p=preview

 var app = angular.module('app', []); //add select-all-on-click to any input to use directive app.directive('selectAllOnClick', [function() { return { restrict: 'A', link: function(scope, element, attrs) { var hasSelectedAll = false; element.on('click', function($event) { if (!hasSelectedAll) { try { //IOs, Safari, thows exception on Chrome etc this.selectionStart = 0; this.selectionEnd = this.value.length + 1; hasSelectedAll = true; } catch (err) { //Non IOs option if not supported, eg Chrome this.select(); hasSelectedAll = true; } } }); //On blur reset hasSelectedAll to allow full select element.on('blur', function($event) { hasSelectedAll = false; }); } }; }]); 

प्रयत्न:

 onclick="this.select()" 

यह मेरे लिए बहुत अच्छा काम करता है।

आप हमेशा document.execCommand उपयोग कर सकते हैं ( सभी प्रमुख ब्राउज़रों में समर्थित )

 document.execCommand("selectall",null,false); 

वर्तमान में केंद्रित तत्व के सभी पाठ का चयन करें

वास्तव में, onclick="this.select();" लेकिन इसे disabled="disabled" साथ संयोजित न करें – यह तब तक काम नहीं करेगा और आपको मैन्युअल रूप से चयन करने या बहु-क्लिक करने की आवश्यकता होगी, फिर भी यदि आप चयनित सामग्री मूल्य को लॉक करना चाहते हैं, तो readonly लिए विशेषता के साथ गठबंधन करें

ऑनफोकस इवेंट के साथ इनपुट ऑटोफोकस:

 <INPUT onfocus="this.select()" TYPE="TEXT" NAME="thing" autofocus> 

यह आपको चयनित वांछित तत्व के साथ एक फार्म खोलने देता है यह इनपुट को हिट करने के लिए ऑटोफोकस का उपयोग करके काम करता है, जो फिर खुद को एक ऑनफोकस ईवेंट भेजता है, जो बारी-बारी से पाठ का चयन करता है।

यहाँ Shoban के जवाब का एक पुन: प्रयोज्य संस्करण है:

 <input type="text" id="userid" name="userid" value="Please enter the user ID" onfocus="Clear(this);" /> function Clear(elem) { elem.value=''; } 

इस तरह से आप कई तत्वों के लिए स्पष्ट स्क्रिप्ट पुनः उपयोग कर सकते हैं।

वैसे यह एक पाठ बॉक्स के लिए सामान्य गतिविधि है

1 पर क्लिक करें – फोकस सेट करें

2/3 (डबल क्लिक) पर क्लिक करें – पाठ चुनें

आप पाठ बॉक्स पर फ़ोकस सेट कर सकते हैं, जब पृष्ठ पहले एक एकल डबल-क्लिक इवेंट में "चयन करें" को कम करने के लिए लोड करता है।

क्लिक ईवेंट को पकड़ने की समस्या यह है कि पाठ के प्रत्येक बाद के क्लिक को इसे फिर से चुनना होगा, जबकि उपयोगकर्ता शायद कर्सर को बदलने की उम्मीद कर रहा था।

मेरे लिए क्या काम किया गया था, एक वेरिएबल का चयन करें, सर्च टेक्स्टऑनक्लिक करें, और इसे डिफ़ॉल्ट रूप से सही पर सेट कर रहा है क्लिक हैंडलर जांचता है कि वेरिएबल अभी भी सच है: यदि यह है, तो यह इसे गलत पर सेट करता है और चयन () करता है मेरे पास तब एक धुंधला ईवेंट हैंडलर है जो इसे सही पर सेट करता है

परिणाम अब तक मुझे लगता है कि उम्मीद थी व्यवहार की तरह लग रहे

(संपादित करें: मुझे यह कहना उपेक्षित है कि मैंने फोकस ईवेंट को पकड़ने की कोशिश की थी जैसा कि किसी ने सुझाव दिया था, लेकिन वह काम नहीं करता: फ़ोकस ईवेंट के बाद आग लगने के बाद, क्लिक करें ईवेंट तुरंत, पाठ को अचयनित कर सकता है)।

इस प्रश्न के लिए विकल्प हैं जब। चयन () मोबाइल प्लेटफॉर्म्स पर काम नहीं कर रहा है: आईओएस डिवाइस (मोबाइल सफारी) पर इनपुट फ़ील्ड में टेक्स्ट का चयन करना

अपने इनपुट फ़ील्ड में "मान" के बजाय "प्लेसहोल्डर" का उपयोग करें

एचटीएमएल जैसे यह <input type="text" value="click the input to select" onclick="javascript:textSelector(this)"/>

और बाइंड के बिना जावास्क्रिप्ट कोड

 function textSelector(ele){ $(ele).select(); } 

आपके द्वारा जो पूछा गया है उसका ठीक उपाय है:

 <input type="text" id="userid" name="userid" value="Please enter the user ID" onClick="this.setSelectionRange(0, this.value.length)"/> 

लेकिन मुझे लगता है, आप "कृपया उपयोगकर्ता आईडी" को प्लेसहोल्डर के रूप में दिखाने या इनपुट में संकेत दिखाने का प्रयास कर रहे हैं। तो, आप निम्न कुशल उपाय के रूप में उपयोग कर सकते हैं:

 <input type="text" id="userid" name="userid" placeholder="Please enter the user ID" /> 

यदि आप AngularJS का उपयोग कर रहे हैं, तो आप आसानी से पहुंच के लिए कस्टम निर्देश का उपयोग कर सकते हैं:

 define(['angular'], function () { angular.module("selectionHelper", []) .directive('selectOnClick', function () { return { restrict: 'A', link: function (scope, element, attrs) { element.on('click', function () { this.select(); }); } }; }); }); 

अब कोई इसे इस तरह प्रयोग कर सकता है:

 <input type="text" select-on-click ... /> 

नमूना requirejs के साथ है – इसलिए कुछ और का उपयोग करते हुए पहली और अंतिम पंक्ति को छोड़ा जा सकता है

यदि कोई पृष्ठ लोड w / jQuery (खोज फ़ील्ड के लिए मिठाई) पर ऐसा करना चाहता है तो यह मेरा समाधान है

 jQuery.fn.focusAndSelect = function() { return this.each(function() { $(this).focus(); if (this.setSelectionRange) { var len = $(this).val().length * 2; this.setSelectionRange(0, len); } else { $(this).val($(this).val()); } this.scrollTop = 999999; }); }; (function ($) { $('#input').focusAndSelect(); })(jQuery); 

इस पोस्ट के आधार पर CSS-Tricks.com पर धन्यवाद

यदि आप बस प्लेसहोल्डर पाठ की कोशिश कर रहे हैं जो एक उपयोगकर्ता का चयन करता है तो प्रतिस्थापित हो जाता है तो यह आजकल placeholder विशेषता का उपयोग करने के लिए सबसे अच्छा अभ्यास है। हालांकि, यदि आप सभी मौजूदा मूल्य का चयन करना चाहते हैं, जब एक फ़ील्ड फ़ोकस करता है, तो @कोर हाउस और @Toastrackenigma उत्तरों का एक संयोजन सबसे अधिक वैधानिक लगता है focus और focusout ईवेंट का उपयोग करें, जो हैंडलर के साथ जो कि वर्तमान फ़ोकस तत्व को सेट / रिलीज़ करता है, और जब केंद्रित होता है तो सभी का चयन करें एक कोणीय 2 / टाइपस्क्रिप्ट उदाहरण निम्नानुसार है (लेकिन वेनिला जेएस में बदलने के लिए तुच्छ होना होगा):

टेम्पलेट:

 <input type="text" (focus)="focus()" (focusout)="focusout()" ... > 

घटक:

 private focused = false; public focusout = (): void => { this.focused = false; }; public focus = (): void => { if(this.focused) return; this.focused = true; // Timeout for cross browser compatibility (Chrome) setTimeout(() => { document.execCommand('selectall', null, false); }); };