सवाल आईओएस डिवाइस (मोबाइल सफारी) पर इनपुट फ़ील्ड में प्रोग्रामेटिक रूप से पाठ का चयन करना


आप आईओएस उपकरणों पर इनपुट फ़ील्ड के प्रोग्राम को प्रोग्रामेटिक रूप से कैसे चुनते हैं, उदा। आईफोन, आईपैड मोबाइल सफारी चल रहा है?

आम तौर पर इसे कॉल करने के लिए पर्याप्त है .select() पर काम <input ... /> तत्व, लेकिन यह उन उपकरणों पर काम नहीं करता है। बिना किसी चयन के कर्सर को मौजूदा प्रविष्टि के अंत में छोड़ दिया जाता है।


76
2017-07-17 15:24


मूल


और फोकस ()। चुनें ()? - mplungjan
मुझे कोई कारण नहीं दिख रहा है कि एक टच डिवाइस क्यों पूर्व-चयन टेक्स्ट की प्रासंगिकता को बदलता है। एक टच डिवाइस के बारे में आपने जो कहा वह गैर-स्पर्श डिवाइस के समान ही कहा जा सकता है। जब कोई उपयोगकर्ता इसे संपादित करने के लिए किसी आइटम को स्पर्श करना चुनता है तो मैं टेक्स्ट को प्री-सिलेक्ट करना चाहता हूं। ज्यादातर मामलों में उपयोगकर्ता मौजूदा सामग्रियों को प्रतिस्थापित करना चाहता है, इस मामले में वे बिना किसी स्पर्श और खींचने के कर सकते हैं। अन्य मामलों में जब वे मौजूदा सामग्री को संपादित करना चाहते हैं तो वे चयन को अचयनित या परिवर्तित करने में सक्षम होंगे। - sroebuck
दुर्भाग्य से। फोकस ()। चुनें () काम नहीं करता है। - sroebuck
मैं इस मुद्दे पर एक वरदान शुरू कर रहा हूँ। मेरा लक्ष्य उपयोगकर्ताओं को मेरे टेक्स्टरेरा पर क्लिक करना और क्लिपबोर्ड पर पाठ की प्रतिलिपि बनाने के लिए "प्रतिलिपि" टैप करना बहुत आसान बनाना है। - Dan Fabulich
यहां वही .. ऐसा लगता है कि मोबाइल सफारी में काम नहीं कर रहे बहुत सारे मेथोड हैं। चयन करें () और। फोकस () उनमें से दो हैं।


जवाब:


setSelectionRange(0, 9999);

https://developer.mozilla.org/en/DOM/Input.select


85
2018-06-10 05:54



यह काम करता है, धन्यवाद! - jrummell
यह मेरे लिए काम करता था लेकिन उसी इनपुट पर माउसअप को रोकना शामिल था। - DuStorm
यह मेरे लिए आईपैड या आईफोन पर काम नहीं करता था - Doug
अगर मैंने ट्रिगर किया तो यह केवल मेरे लिए काम करता था .focus() invoking से पहले इनपुट पर input.setSelectionRange। यदि आप के लिए सुन रहे हैं focus इनपुट पर घटना, एक अनंत लूप के लिए खाते को याद रखें। - allieferr
एक गॉचा जो उल्लेखनीय है: यदि उनके पास टेक्स्टरेरा पर काम नहीं करेगा readonly विशेषता सेट - JayPea


इस धागे में कुछ भी मेरे लिए काम नहीं करता है, यहां मेरे आईपैड पर क्या काम करता है:

// t is the input field
setTimeout(function() {
    t.setSelectionRange(0, 9999);
}, 1);

25
2017-09-15 19:43



यह एफ ** की चाल है! धन्यवाद! 'क्लिक' ईवेंट के साथ काम करता है - saike


यह पहेली देखें: (इनपुट बॉक्स में कुछ टेक्स्ट दर्ज करें और 'टेक्स्ट का चयन करें' पर क्लिक करें)

यह मेरे आईपॉड (5 वें जीन आईओएस 6.0.1) पर एक इनपुटबॉक्स में टेक्स्ट का चयन कर रहा है, कीबोर्ड खोल रहा है और कट / कॉपी / सुझाव ... मेनू भी दिखा रहा है

सादा जावास्क्रिप्ट का उपयोग करना। JQuery के साथ यह कोशिश नहीं की

document.getElementById("p1").selectionStart = 0
document.getElementById("p1").selectionEnd = 999

ध्यान दें कि संख्या 99 9 सिर्फ एक नमूना है। आपको इन नंबरों को उन वर्णों की संख्या में सेट करना चाहिए जिन्हें आप चुनना चाहते हैं।

अद्यतन करें:

  • आईपॉड 5 - आईओएस 6.0.1 - ठीक काम करना।
  • आईपैड 1 - आईओएस 5.1.1 - केवल पाठ चयनित है। कट / कॉपी मेनू खोलने के लिए एक बार चयन टैप करें
  • आईपैड 2 - आईओएस 4.3.3 - केवल पाठ चयनित है। कट / कॉपी मेनू खोलने के लिए एक बार चयन टैप करें

पिछले दो के लिए, आप एक क्लिक घटना को ट्रिगर करके प्रयोग कर सकते हैं input तत्त्व

अद्यतन करें: (07-10-2013)

  • आईपॉड 5 - आईओएस 7.0.2 - लिंक में पहेली का उपयोग करना: इनपुट बॉक्स में टाइप किए गए टेक्स्ट को नहीं देख सकता।                   चयन करना मुझे facebook.com पर रीडायरेक्ट करता है (??? wtf ???)                   नहीं पता कि वहां क्या हो रहा है।

अद्यतन करें: (14-11-2013)

  • आईओएस 7.0.3: से टिप्पणी के लिए धन्यवाद Binki अद्यतन करें कि                    .selectionStart तथा .selectionEnd  कर देता है काम।

अद्यतन करें: (15-01-2015)

  • आईओएस 8.x.x: से टिप्पणी के लिए धन्यवाद माइकल सिबर्ट। टिप्पणी से लिया गया:                   मुझे दोनों फोकस सुनना था और घटनाओं पर क्लिक करना था और फिर सेटटाइम / _। डिबॉन्स सेट करना था                   इसे दोनों मामलों में काम करने के लिए: इनपुट पर क्लिक करें या टैबबिंग के माध्यम से फोकस करें

23
2017-12-07 10:26



आज के लिए तुम मेरे हीरो हो! एक जादू की तरह काम करता है! ;-) - andi1984
@ andi1984 मैं नायक बैज का दावा कहां करूं? - bart s
क्या आप अन्य आईओएस संस्करणों की संगतता के बारे में जानते हैं? क्या यह आईओएस 5 और आईओएस 4 पर काम करता है? - andi1984
आईओएस 6 पर मेरे लिए काम करता है लेकिन ए) डेस्कटॉप क्रोम पर काम नहीं करता है b) पाठ इनपुट अक्षम होने पर काम नहीं करता है :( मेरा उपयोग केस: मैं अद्वितीय यूआरएल उत्पन्न करता हूं और साझाकरण को जोड़ना चाहता हूं। - Michael Freeman
@barts मुझे लगता है कि आप फेसबुक पर समाप्त हो गए हैं क्योंकि jsfiddle पर "शेयर" मेनू को गड़बड़ कर दिया जाना चाहिए और अदृश्य होने पर टैपबल होना चाहिए। आईपैड पर आईओएस-7.0.3 के साथ परीक्षण करते समय मैंने अदृश्य ट्विटर बटन पर क्लिक करना समाप्त कर दिया। मैंने यह भी पाया कि जब मैंने सोचा कि मैं आपके ऊपर टैप कर रहा था <input/>, आईपैड ने सोचा कि मैं jsfiddle के "सीएसएस" फलक में टैप कर रहा था (जिसमें मैंने जो भी टाइप किया था वह अदृश्य था)। एक बार मुझे सही पर निर्देशित मेरी नल मिल गई <input/>, आपका "चयन टेक्स्ट" बटन आईओएस-7.0.3 :-) पर पूरी तरह से ठीक काम करता है। - binki


नकारात्मक साबित करना मुश्किल है, लेकिन मेरे शोध से पता चलता है कि यह मोबाइल सफारी में एक बग है।

ध्यान दें कि फोकस () काम करता है, कम या ज्यादा - हालांकि इसे सफल होने के लिए एक से अधिक टैप की आवश्यकता हो सकती है, और यदि आप किसी क्षेत्र में उपयोगकर्ता टैप को प्रतिक्रिया देने का प्रयास कर रहे हैं तो यह जरूरी नहीं है क्योंकि टैप स्वयं ही फ़ील्ड देगा ध्यान देते हैं। दुर्भाग्य से, चुनें () है मोबाइल सफारी में बस गैर-कार्यात्मक।

आपकी सबसे अच्छी शर्त एक बग रिपोर्ट हो सकती है सेब


22
2017-08-30 09:39



हमारा परीक्षण वही इंगित करता है। यह मोबाइल सफारी में एक बग / गायब सुविधा है। - Nir Levy
एफडब्ल्यूआईडब्ल्यू, यह क्रोम डेस्कटॉप और एंड्रॉइड ब्राउज़र में काम करता है, जो वेबकिट पर भी आधारित हैं। - jrummell


क्षमा करें, मेरी पिछली पोस्ट में, मैंने जावास्क्रिप्ट को यह नहीं बताया कि आप जावास्क्रिप्ट में एक जवाब चाहते हैं।

आप जो चाहते हैं उसे प्राप्त करने के लिए UIWebView साथ में जावास्क्रिप्ट, मैं इसे काम करने के लिए जानकारी के दो महत्वपूर्ण टुकड़ों को एक साथ खींचने में कामयाब रहा हूं। मोबाइल ब्राउज़र के बारे में निश्चित नहीं है।

  1. element.setSelectionRange(0,9999); जो हम चाहते हैं वह करता है

  2. माउसअप इवेंट चयन को पूर्ववत कर रहा है

इस प्रकार (प्रोटोटाइप का उपयोग कर):     

    input.observe ('फोकस', फ़ंक्शन () {
      this.setSelectionRange (0, 99 99);
    });
    input.observe ('माउसअप', फ़ंक्शन (ईवेंट) {
      event.stop ();
    });

उसने चाल चली।

मैट


7
2017-07-25 08:03



हमारे पास एक ही समस्या है और आपका समाधान काम करता है - लेकिन हम jquery (मोबाइल वास्तव में) का उपयोग कर रहे हैं। / * fill-ins * / $ ("इनपुट") के अंदर टेक्स्ट का चयन करें। फोकस (फ़ंक्शन () {this.setSelectionRange (0, 99 99); झूठी वापसी;})। mouseup (function () {वापसी झूठी;} ); - DuStorm
मैं आईपैड और आईफोन पर आईओएस 8 का उपयोग कर रहा हूं, और @ डूस्टॉर्म (इस पर टिप्पणी) से कोड एकमात्र चीज है जो यहां दिए गए सभी उत्तरों में से मेरे लिए काम करती है। दोहराने के लिए, कम से कम क्रोम और सफारी में आईओएस 8 पर काम करता है: $("input").focus(function () { this.setSelectionRange(0, 9999); return false; } ).mouseup( function () { return false; }); - Aaron Jessen
मुझे उपयोग करना पड़ा focusin काम करने के लिए फोकस करने के बजाय, आईओएस 7 - Lucas


ऐसा लगता है कि फोकस काम करेगा, लेकिन केवल तभी जब किसी मूल घटना से बुलाया जाता है। SetTimeout जैसे कुछ का उपयोग करके फोकस फोकस कुंजीपटल को कॉल नहीं करता है। आईओएस कीबोर्ड का नियंत्रण बहुत खराब है। यह एक अच्छी स्थिति नहीं है।


3
2018-03-22 03:02





कुछ ऐसा है जो मेरे लिए वेबकिट पर मेरे लिए काम कर रहा है जो एंड्रॉइड 2.2 के साथ आता है:

function trySelect(el) {
    setTimeout(function() {
        try {
            el.select();
        } catch (e) {
        }
    }, 0);
}

क्रोमियम देखें समस्या 32865


1
2018-01-20 04:14





आईपैड पर आईओएस 7 के साथ एकमात्र तरीका है कि मैं यह काम करने में सक्षम था वास्तव में उपयोग करना था <textarea></textarea> के बजाय <input> खेत।

जैसे

<textarea onclick="this.setSelectionRange(0, 9999);">My text will be selected when textarea is clicked.</textarea>

क्षेत्र के अंदर पाठ को बदलने से उपयोगकर्ता को कैसे रोकें और अधिक कठिन था, क्योंकि क्या आप टेक्स्टरेरा को केवल पढ़ते हैं, चयन चाल अब और काम नहीं करेगी।


1
2018-02-05 16:01





मैं इस समाधान की तलाश में पागल हो गया, जबकि आपके सभी प्रतिक्रियाओं ने मदद की यह मेरे लिए कीड़े का एक और कर खोला।

ग्राहक चाहता था कि उपयोगकर्ता सक्षम हो क्लिक करें और सभी का चयन करें, और भी उपयोगकर्ता को चलो 'टैब' और आईपैड पर सभी का चयन करें (बाहरी कीबोर्ड के साथ। मुझे पता है, पागल ...)

इस समस्या का मेरा समाधान था, घटनाओं को पुनर्व्यवस्थित करें। प्रथम फोकस, फिर क्लिक करें, फिर touchstart

$('#myFUBARid').on('focus click touchstart', function(e){
  $(this).get(0).setSelectionRange(0,9999);
  //$(this).css("color", "blue");
  e.preventDefault();
});

मुझे उम्मीद है कि यह किसी की मदद करेगा, क्योंकि आपने मुझे अनगिनत बार मदद की है।


0
2017-11-02 15:32





यदि आप HTML5-compliant ब्राउज़र का उपयोग कर रहे हैं, तो आप इसका उपयोग कर सकते हैं placeholder="xxx" आपके में input टैग। वह नौकरी करना चाहिए।


-4
2018-06-05 09:02



मुझे नहीं लगता कि यह सवाल पूछ रहा था - caitriona