एक वेनिला जेएस या jQuery समाधान क्या है जो टेक्स्टबॉक्स के सभी सामग्रियों का चयन करेगा जब टेक्स्टबॉक्स फोकस प्राप्त करता है?
एक वेनिला जेएस या jQuery समाधान क्या है जो टेक्स्टबॉक्स के सभी सामग्रियों का चयन करेगा जब टेक्स्टबॉक्स फोकस प्राप्त करता है?
जवाबों:
$(document).ready(function() {
$("input:text").focus(function() { $(this).select(); } );
});
<input type="text" onfocus="this.select();" onmouseup="return false;" value="test" />
onmouseup="return false;"
यदि आप चाहते हैं कि उपयोगकर्ता टेक्स्ट बॉक्स के अंदर ध्यान केंद्रित करने के बाद पाठ का स्वतंत्र रूप से चयन करने और संपादित करने में सक्षम न हो तो उसे न जोड़ें । इस कोड के साथ, पाठ को "सभी का चयन करें" स्थिति में बंद कर दिया जाएगा और उपयोगकर्ता इसे तब तक संपादित नहीं कर सकेगा जब तक उपयोगकर्ता किसी नए पाठ में टाइप नहीं करता है या तीर कुंजी का उपयोग करता है। ईमानदारी से यह एक बहुत ही अजीब व्यवहार लगता है और इससे कोई मतलब नहीं होगा जब तक कि टेक्स्टबॉक्स स्थायी रूप से गैर-संपादन योग्य नहीं है (और अक्षम है)।
onmouseup="return false;"
कि आप केवल चयन करना चाहते हैं जब उपयोगकर्ता पहले क्लिक या टैब पर आए । और वेनिला जावास्क्रिप्ट के लिए +1!
$(document).ready(function() {
$("input[type=text]").focus().select();
});
$(document).ready(function() {
$("input:text")
.focus(function () { $(this).select(); } )
.mouseup(function (e) {e.preventDefault(); });
});
mouseup
घटना के डिफ़ॉल्ट को रोकने का एक नकारात्मक पहलू देती है : "एक बार जब कर्सर फ़ील्ड में होता है, तो कर्सर को काम नहीं करने के लिए चयनित पाठ के भीतर कहीं पर क्लिक करने से काम नहीं होता है; क्लिक प्रभावी रूप से अक्षम हो जाते हैं। फिर भी, के लिए। ऐसे हालात जहां फोकस पर पूरे पाठ का चयन करना वांछनीय है, संभवतः यह दो बुराइयों से कम है। "
jQuery जावास्क्रिप्ट नहीं है जो कुछ मामलों में उपयोग करना अधिक आसान है।
इस उदाहरण को देखें:
<textarea rows="10" cols="50" onclick="this.focus();this.select()">Text is here</textarea>
स्रोत: सीएसएस ट्रिक्स , एमडीएन
यह केवल एक क्रोम / सफारी मुद्दा नहीं है, मैंने फ़ायरफ़ॉक्स 18.0.1 के साथ काफी समान व्यवहार का अनुभव किया। मज़ेदार बात यह है कि MSIE पर ऐसा नहीं होता है! यहां समस्या पहली माउसअप घटना है जो इनपुट सामग्री को अचयनित करने के लिए मजबूर करती है, इसलिए केवल पहली घटना को अनदेखा करें।
$(':text').focus(function(){
$(this).one('mouseup', function(event){
event.preventDefault();
}).select();
});
टाइमऑट दृष्टिकोण एक अजीब व्यवहार का कारण बनता है, और हर माउसअप घटना को अवरुद्ध करके आप इनपुट तत्व पर फिर से चयन को हटा नहीं सकते हैं।
HTML:
Enter Your Text : <input type="text" id="text-filed" value="test">
JS का उपयोग करना:
var textFiled = document.getElementById("text-filed");
textFiled.addEventListener("focus", function() { this.select(); });
JQuery का उपयोग:
$("#text-filed").focus(function() { $(this).select(); } );
रिएक्ट JS का उपयोग करना:
संबंधित घटक में रेंडर फ़ंक्शन के अंदर -
<input
type="text"
value="test"
onFocus={e => e.target.select()}
/>
onFocus={(e) => e.target.select()}
मेरा समाधान टाइमआउट का उपयोग करना है। ठीक काम करने लगता है
$('input[type=text]').focus(function() {
var _this = this;
setTimeout(function() {
_this.select();
}, 10);
});
यह iOS पर भी काम करेगा:
<input type="text" onclick="this.focus(); this.setSelectionRange(0, 9999);" />
https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select
मुझे पता है कि इनलाइन कोड खराब शैली है, लेकिन मैं इसे एक .js फ़ाइल में नहीं डालना चाहता था। JQuery के बिना काम करता है!
<input type="text" value="blah blah" onfocus="this.select(); this.selAll=1;" onmouseup="if(this.selAll==0) return true; this.selAll=0; return false;"></input>
यहां जवाबों ने मुझे एक बिंदु तक लाने में मदद की, लेकिन मुझे क्रोम में अप / डाउन बटन पर क्लिक करने पर एचटीएमएल 5 नंबर इनपुट फ़ील्ड में एक समस्या थी।
यदि आप बटनों में से किसी एक पर क्लिक करते हैं, और माउस को बटन के ऊपर छोड़ देते हैं तो संख्या बदल जाती है जैसे कि आप माउस बटन को पकड़ रहे थे क्योंकि माउसअप को फेंक दिया जा रहा था।
जैसे ही इसे नीचे ट्रिगर किया गया, मैंने माउसअप हैंडलर को हटाकर इसे हल कर दिया:
$("input:number").focus(function () {
var $elem = $(this);
$elem.select().mouseup(function (e) {
e.preventDefault();
$elem.unbind(e.type);
});
});
आशा है कि यह भविष्य में लोगों की मदद करेगा ...
mouseup
लिए बाध्य हैं और एस नहीं । यह समस्या इसलिए नहीं आनी चाहिएnumber
यह काम करेगा, यह कोशिश करो -
<input id="textField1" onfocus="this.select()" onmouseup="return false" />
सफारी / IE 9 और क्रोम में काम करता है, मुझे फ़ायरफ़ॉक्स में परीक्षण करने का मौका नहीं मिला।
मैं कुछ फ़ंक्शन कॉल को शामिल करके ज़ैच के उत्तर को थोड़ा सुधारने में सक्षम था। उस उत्तर के साथ समस्या यह है कि यह onMouseUp को पूरी तरह से निष्क्रिय कर देता है, जिससे ध्यान केंद्रित होते ही आप टेक्स्टबॉक्स में इधर-उधर क्लिक करने से बच जाते हैं।
यहाँ मेरा कोड है:
<input type="text" onfocus="this.select()" onMouseUp="javascript:TextBoxMouseUp();" onMouseDown="javascript:TextBoxMouseDown();" />
<script type="text/javascript">
var doMouseUp = true;
function TextBoxMouseDown() {
doMouseUp = this == document.activeElement;
return doMouseUp;
}
function TextBoxMouseUp() {
if (doMouseUp)
{ return true; }
else {
doMouseUp = true;
return false;
}
}
</script>
यह Zach के उत्तर पर थोड़ा सुधार है। यह IE में पूरी तरह से काम करता है, क्रोम में बिल्कुल भी काम नहीं करता है, और फायरफॉक्स में वैकल्पिक रूप से सफलता के साथ काम करता है (शाब्दिक रूप से हर दूसरे समय)। अगर किसी को इस बात का अंदाजा है कि इसे एफएफ या क्रोम में विश्वसनीय तरीके से कैसे काम किया जाए, तो कृपया साझा करें।
वैसे भी, मुझे लगा कि मैं इसे एक अच्छा सा बनाने के लिए साझा करूँगा।
onMouseUp=""
और onMouseDown=""
सही w3 मानक नहीं हैं। वे किया जाना चाहिए onmouseup=""
और onmousedown=""
। अन्य HTML विशेषताओं के साथ, उन्हें ऊंट के मामले में निचले हिस्से में लिखा जाना चाहिए।
@Travis और @Mari की तरह, मैं उपयोगकर्ता द्वारा क्लिक किए जाने पर स्वत: चयन करना चाहता था, जिसका अर्थ है कि किसी mouseup
ईवेंट के डिफ़ॉल्ट व्यवहार को रोकना, लेकिन उपयोगकर्ता को क्लिक करने से रोकना नहीं है। मैं जिस समाधान के साथ आया था, जो IE11, Chrome 45, ओपेरा 32 और फ़ायरफ़ॉक्स 29 (ये मेरे द्वारा वर्तमान में इंस्टॉल किए गए ब्राउज़र हैं) में काम करता है, एक माउस क्लिक में शामिल घटनाओं के अनुक्रम पर आधारित है।
जब आप एक टेक्स्ट इनपुट पर क्लिक करते हैं जिसमें फोकस नहीं होता है, तो आपको ये ईवेंट मिलते हैं (दूसरों के बीच):
mousedown
: आपके क्लिक के जवाब में। डिफ़ॉल्ट हैंडलिंग बढ़ जाती हैfocus
यदि आवश्यक हो तो है और चयन शुरू हो जाता है।focus
: डिफ़ॉल्ट हैंडलिंग के भाग के रूप में mousedown
।mouseup
: आपके क्लिक का पूरा होना, जिसकी डिफ़ॉल्ट हैंडलिंग चयन का अंत तय करेगी।जब आप एक टेक्स्ट इनपुट पर क्लिक करते हैं जिसमें पहले से ही फोकस होता है, तो focus
ईवेंट को छोड़ दिया जाता है। जैसा कि @Travis और @Mari दोनों ने अचरज से देखा, mouseup
जरूरतों की डिफ़ॉल्ट हैंडलिंग केवल तभी focus
होती है जब घटना होती है। हालांकि, जैसा कि कोई " focus
नहीं हुआ" घटना है, हमें यह पता लगाने की आवश्यकता है, जिसे हम mousedown
हैंडलर के भीतर कर सकते हैं ।
@ मारी के समाधान के लिए आवश्यक है कि jQuery आयात किया जाए, जिससे मैं बचना चाहता हूं। @ ट्रैविस समाधान निरीक्षण करके ऐसा करता है document.activeElement
। मुझे नहीं पता कि वास्तव में उसका समाधान ब्राउज़रों पर काम क्यों नहीं करता है, लेकिन यह ट्रैक करने का एक और तरीका है कि क्या टेक्स्ट इनपुट में फ़ोकस है: बस इसका अनुसरण करें focus
औरblur
घटनाओं ।
यहाँ कोड है कि मेरे लिए काम करता है:
var blockMouseUp = false;
var customerInputFocused = false;
txtCustomer.onfocus =
function ()
{
try
{
txtCustomer.selectionStart = 0;
txtCustomer.selectionEnd = txtCustomer.value.length;
}
catch (error)
{
txtCustomer.select();
}
customerInputFocused = true;
};
txtCustomer.onblur =
function ()
{
customerInputFocused = false;
};
txtCustomer.onmousedown =
function ()
{
blockMouseUp = !customerInputFocused;
};
txtCustomer.onmouseup =
function ()
{
if (blockMouseUp)
return false;
};
मुझे उम्मीद है कि यह किसी की मदद है। :-)
एक जावास्क्रिप्ट या jQuery समाधान क्या है जो टेक्स्टबॉक्स के सभी सामग्रियों का चयन करेगा जब टेक्स्टबॉक्स फोकस प्राप्त करता है ?
आपको केवल निम्नलिखित विशेषता जोड़ने की आवश्यकता है:
onfocus="this.select()"
उदाहरण के लिए:
<input type="text" value="sometext" onfocus="this.select()">
(ईमानदारी से मुझे कोई सुराग नहीं है कि आपको किसी और चीज की आवश्यकता क्यों होगी।)
इसने मेरे लिए काम किया (पोस्टिंग के बाद से यह उत्तर में नहीं है लेकिन एक टिप्पणी में है)
$("#textBox").focus().select();
$('input').focus(function () {
var self = $(this);
setTimeout(function () {
self.select();
}, 1);
});
संपादित करें: प्रति @ डेविडजी के अनुरोध के अनुसार, मैं विवरण प्रदान नहीं कर सकता क्योंकि मुझे यकीन नहीं है कि यह क्यों काम करता है, लेकिन मेरा मानना है कि यह ध्यान केंद्रित करने वाली घटना के ऊपर या नीचे या जो कुछ भी करता है और इनपुट तत्व अधिसूचना प्राप्त करने के साथ कुछ करना है। यह ध्यान केंद्रित है। टाइमआउट सेट करने से तत्व को यह महसूस करने का एक पल मिल जाता है कि उसने ऐसा किया है।
नोट: यदि आप ASP.NET में प्रोग्रामिंग कर रहे हैं, तो आप ScriptManager.RegisterStartupScript C # का उपयोग करके स्क्रिप्ट चला सकते हैं:
ScriptManager.RegisterStartupScript(txtField, txtField.GetType(), txtField.AccessKey, "$('#MainContent_txtField').focus(function() { $(this).select(); });", true );
या अन्य उत्तरों में सुझाए गए HTML पृष्ठ में केवल स्क्रिप्ट लिखें।
मैं पार्टी में देर से आता हूं, लेकिन यह आईई 11, क्रोम, फायरफॉक्स में पूरी तरह से काम करता है, बिना माउसअप के (और JQuery के बिना)।
inputElement.addEventListener("focus", function (e) {
var target = e.currentTarget;
if (target) {
target.select();
target.addEventListener("mouseup", function _tempoMouseUp(event) {
event.preventDefault();
target.removeEventListener("mouseup", _tempoMouseUp);
});
}
});
focus
इस क्षेत्र में टैब करके, आप कई माउसअप इवेंट श्रोताओं को संलग्न करेंगे ...
मेरा समाधान अगले है:
var mouseUp;
$(document).ready(function() {
$(inputSelector).focus(function() {
this.select();
})
.mousedown(function () {
if ($(this).is(":focus")) {
mouseUp = true;
}
else {
mouseUp = false;
}
})
.mouseup(function () {
return mouseUp;
});
});
इसलिए माउसअप आमतौर पर काम करेगा, लेकिन इनपुट द्वारा ध्यान केंद्रित करने के बाद अचयनित नहीं करेगा