প্রোগ্রামের মাধ্যমে আইওএস ডিভাইসে একটি ইনপুট ক্ষেত্রে পাঠ্য নির্বাচন করা (মোবাইল সাফারি)


88

আপনি কীভাবে আইওএস ডিভাইসগুলিতে কোনও ইনপুট ক্ষেত্রের পাঠ্যটি প্রোগ্রামিকভাবে নির্বাচন করতে পারেন, যেমন আইফোন, আইপ্যাড চলমান মোবাইল সাফারি?

সাধারণত উপাদানটিতে .select()ফাংশনটি কল করা যথেষ্ট <input ... />, তবে এটি সেই ডিভাইসে কাজ করে না। কার্সারটি সহজেই বিদ্যমান এন্ট্রি শেষে কোনও নির্বাচন না করে রেখে দেওয়া হয়।


10
স্পর্শ ডিভাইস হওয়ার কারণে প্রাক-নির্বাচনের পাঠ্যের প্রাসঙ্গিকতা পরিবর্তনের কোনও কারণ আমি দেখতে পাচ্ছি না। আপনি কোনও টাচ ডিভাইস সম্পর্কে যা বলেছিলেন তা অন-টাচ ডিভাইস সম্পর্কেও সমানভাবে বলা যেতে পারে। আমি যখন ব্যবহারকারী কোনও আইটেম সম্পাদনা করতে স্পর্শ করতে পছন্দ করেন তখন আমি পাঠ্য প্রাক-নির্বাচন করতে চাই। বেশিরভাগ ক্ষেত্রে ব্যবহারকারী সম্ভবত বিদ্যমান সামগ্রীগুলি প্রতিস্থাপন করতে চান এমন ক্ষেত্রে তারা কোনও স্পর্শ এবং টেনে ছাড়াই তা করতে সক্ষম হবেন। অন্যান্য ক্ষেত্রে যখন তারা বিদ্যমান সামগ্রীটি সম্পাদনা করতে চান তারা নির্বাচনটি অনির্বাচিত বা পরিবর্তন করতে সক্ষম হবেন।
শ্রোবাক

4
দুর্ভাগ্যক্রমে .ফোকাস () নির্বাচন করুন () কাজ করে না।
শ্রোবাক

4
আমি এই ইস্যুতে একটি অনুগ্রহ শুরু করছি। আমার লক্ষ্যটি হ'ল ব্যবহারকারীরা আমার টেক্সারিয়ায় ক্লিক করা এবং ক্লিপবোর্ডে পাঠ্যটি অনুলিপি করতে "অনুলিপি" এ আলতো চাপুন।
ড্যান ফাবুলিচ

এখানেও একই .. মোবাইল সাফারিতে কাজ না করার প্রচুর পদ্ধতি রয়েছে বলে মনে হয় se সেলেক্ট () এবং .ফোকাস () এর মধ্যে দুটি।

@ স্রোয়েবাক ডেভিড ডব্লু। কিথের জন্য দুর্দান্ত উত্তর! থাম্বস আপ!
eyurdul

উত্তর:


95
input.setSelectionRange(0, 9999);

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


4
এটি আমার পক্ষে কাজ করেছে তবে একই ইনপুটগুলিতে মাউসআপ বন্ধ করা অন্তর্ভুক্ত ছিল।
ডুস্টারম

8
এটি আমার পক্ষে কোনও আইপ্যাড বা আইফোন
ডগ

4
এটি কেবল তখনই কাজ করেছিল যদি আমি চালনার .focus()আগে ইনপুটটিতে ট্রিগার করি input.setSelectionRange। আপনি যদি ইনপুটটিতে focusইভেন্টটির কথা শুনছেন তবে মনে রাখবেন অসীম লুপের জন্য অ্যাকাউন্ট করুন।
allieferr

10
একটি গোচা যা উল্লেখযোগ্য: এটি টেক্সারিয়াসে কাজ করবে না যদি তাদের readonlyবৈশিষ্ট্যটি সেট থাকে।
জয়পিয়া

4
আমি এক ঘন্টা ধরে বিভিন্ন সমাধান নিয়ে খেললাম playing আপনি প্রোগ্রামালিমে ট্রিগার করার সময় setSelectionRange()কোনও focusহ্যান্ডলারে কল করা কাজ করে .focus()তবে আপনি যখন ম্যানুয়ালি আইওএস-এ টেক্সট ইনপুটটিতে ট্যাপ করেন তখন নির্বাচনটি ঘটে না। এটি বলার অপেক্ষা রাখে না, আপনাকে setSelectionRange()কেবল 0 এর একটি সেটটাইমআউটের মধ্যে কল করতে হবে এবং ফোকাসটি কীভাবে ট্রিগার করবে তা প্রত্যাশিত হিসাবে কাজ করে।

30

এই থ্রেডের কিছুই আমার পক্ষে কাজ করেনি, আমার আইপ্যাডে যা কাজ করে তা এখানে:

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

এটি কি চ ** আত্মীয় কৌশল! ধন্যবাদ! 'ক্লিক' ইভেন্টের সাথে কাজ করে

তোমাকে অনেক ধন্যবাদ!!
ভ্যাক্লাভ কাসাক

26

নেতিবাচক প্রমাণ করা শক্ত, তবে আমার গবেষণাটি মনে করে যে এটি মোবাইল সাফারিতে একটি বাগ।

নোট করুন যে ফোকাস () কমবেশি কাজ করে - যদিও এটি সফল হতে একাধিক ট্যাপের প্রয়োজন হতে পারে, এবং আপনি যদি ক্ষেত্রের কোনও ব্যবহারকারী ট্যাপকে প্রশ্নের সাথে উত্তর দেওয়ার চেষ্টা করছেন তবে ট্যাপটি নিজেই ক্ষেত্রটি দেবে বলে প্রয়োজনীয় নয় ফোকাস। দুর্ভাগ্যবশত, নির্বাচন () হল কেবল মোবাইল সাফারি অ কার্মিক।

আপনার সেরা বাজি অ্যাপলের সাথে বাগ রিপোর্ট হতে পারে ।


4
আমাদের পরীক্ষা একই নির্দেশ করে। এটি মোবাইল সাফারিতে একটি বাগ / হারিয়ে যাওয়া বৈশিষ্ট্য।
নীড় লেভি

4
এফডাব্লুআইডাব্লু, এটি ক্রোম ডেস্কটপ এবং অ্যান্ড্রয়েড ব্রাউজারে কাজ করে যা ওয়েবকিটের উপর ভিত্তি করে।
jrummell

24

এই ফিডলটি দেখুন : (ইনপুট বাক্সে কিছু পাঠ্য লিখুন এবং 'পাঠ্য নির্বাচন করুন' ক্লিক করুন)

এটি আমার আইপডটিতে একটি ইনপুটবক্সে পাঠ্য নির্বাচন করছে (৫ ম জেনার আইওএস .0.০.১), কীবোর্ডটি খুলছে এবং কাট / অনুলিপি / প্রস্তাবনা ... মেনু দেখাচ্ছে

সরল জাভাস্ক্রিপ্ট ব্যবহার করে। JQuery দিয়ে এটি চেষ্টা করে নি

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

মনে রাখবেন যে 999 নম্বরটি কেবল একটি নমুনা। আপনি নির্বাচন করতে চান এমন অক্ষরের সংখ্যায় এই সংখ্যাগুলি সেট করা উচিত।

হালনাগাদ:

  • আইপড 5 - আইওএস 6.0.1 - ঠিক আছে কাজ করছে।
  • আইপ্যাড 1 - আইওএস 5.1.1 - শুধুমাত্র পাঠ্য নির্বাচিত। কাট / অনুলিপি মেনু খুলতে একবার নির্বাচন নির্বাচন করুন
  • আইপ্যাড 2 - আইওএস 4.3.3 - শুধুমাত্র পাঠ্য নির্বাচিত। কাট / অনুলিপি মেনু খুলতে একবার নির্বাচন নির্বাচন করুন

শেষ দুটিটির জন্য, আপনি inputউপাদানটিতে ক্লিক ইভেন্টটি ট্রিগার করে পরীক্ষা করতে পারেন

আপডেট: (07-10-2013)

  • আইপড ৫ - আইওএস --.০.২ - লিঙ্কে ফিডল ব্যবহার করে: ইনপুট বাক্সে টাইপ করা পাঠ্য দেখতে পাচ্ছেন না। নির্বাচন করা টিপুন আমাকে ফেসবুক.কম (??? wtf ???) এ পুনঃনির্দেশিত করে সেখানে কী চলছে তা কোনও ধারণা নেই।

আপডেট: (14-11-2013)

  • আইওএস 7.0.3 থেকে মন্তব্য ধন্যবাদ binki আপডেট যে .selectionStartএবং .selectionEnd না হবে।

আপডেট: (15-01-2015)

  • আইওএস 8.xx: মাইকেল সাইবার্টের মন্তব্যের জন্য ধন্যবাদ । মন্তব্যটি থেকে নেওয়া: আমাকে ফোকাস এবং ক্লিক ইভেন্ট উভয়ের জন্য শুনতে হবে এবং তারপরে সেটটাইমআউট / _ সেট করতে হবে উভয় ক্ষেত্রে এটি কাজ করার জন্য: ইনপুটটি ক্লিক করুন বা ট্যাবিংয়ের মাধ্যমে ফোকাস করুন

আপনি আজকের জন্য আমার নায়ক! একটি যাদুমন্ত্র মত কাজ করে! ;-)
andi1984

4
@ andi1984 আমি কোথায় নায়ক ব্যাজ দাবি করব?
বার্ট এস

4
আপনি অন্যান্য আইওএস সংস্করণে সামঞ্জস্যতা সম্পর্কে জানেন? এটি আইওএস 5 এবং আইওএস 4 এ কাজ করে?
andi1984

4
IOS6 উপর আমার জন্য কাজ করে কিন্তু ক) তে ডেস্কটপ Chrome খ কাজ করে না) কাজ করে না যখন পাঠ্য ইনপুট অক্ষম :( আমার ব্যবহার ক্ষেত্রে দেখা যায়: আমি একক URL তৈরী করা এবং faciliate শেয়ারিং চাই।
মঙ্গল রবার্টসন

4
@ বার্টস আমি অনুমান করতে যাচ্ছি যে আপনি ফেসবুকে শেষ করেছেন কারণ জেসফিডেলের "শেয়ার" মেনুটি অবশ্যই অগোচরে থাকতে হবে এবং ট্যাপ করতে হবে। আইপ্যাডে আইওএস-..০.৩ পরীক্ষা করে আমি নিজেই অদৃশ্য টুইটার বোতামটি ক্লিক করে শেষ করেছি। আমি এটিও দেখতে পেলাম যে যখন আমি ভেবেছিলাম যে আমি আপনার <input/>সাথে আলতো চাপছি, তখন আইপ্যাড ভেবেছিল আমি জেসফিডেলের "সিএসএস" প্যানে ট্যাপ করছি (যার মধ্যে আমি টাইপ করা কিছু অদৃশ্য ছিল)। একবার আমার <input/>ট্যাপটি সঠিক দিকে পরিচালিত হয়ে গেলে , আপনার "নির্বাচিত পাঠ্য" বোতামটি iOS-7.0.3 :-) এ পুরোপুরি সূক্ষ্মভাবে কাজ করে।
বিনকি

7

দুঃখিত, আমার আগের পোস্টে, আমি জাভাস্ক্রিপ্টের প্রতি ইঙ্গিত দিচ্ছি না যে আপনি জাভাস্ক্রিপ্টে উত্তর চেয়েছিলেন।

জাভাস্ক্রিপ্টের সাহায্যে ইউআইবিউবভিউতে আপনি যা চান তা পেতে, এটিকে কাজ করার জন্য আমি দুটি গুরুত্বপূর্ণ টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো করে কথা বলতে পেরেছি। মোবাইল ব্রাউজার সম্পর্কে নিশ্চিত নয়।

  1. element.setSelectionRange(0,9999); আমরা যা চাই তা করে

  2. মাউসআপ ইভেন্টটি নির্বাচনটি পূর্বাবস্থায় নিচ্ছে

এইভাবে (প্রোটোটাইপ ব্যবহার করে):

    ইনপুট.ওবজার ('ফোকাস', ফাংশন () {
      this.setSelectionRange (0, 9999);
    });
    ইনপুট.ওবজার ('মাউসআপ', ফাংশন (ইভেন্ট) {
      ইভেন্ট.স্টপ ();
    });

কৌতুক করে

ম্যাট


4
আমরা একই সমস্যা পেয়েছি এবং আপনার সমাধানটি কাজ করে দেখতে পেয়েছি - তবে আমরা jquery (প্রকৃতপক্ষে মোবাইল) ব্যবহার করছি। / * ফিল্ট ইন-এর ভিতরে পাঠ্য নির্বাচন করুন * / $ ("ইনপুট") focus );
ডুস্টরম

4
আমি আইপ্যাড এবং আইফোনে আইওএস 8 ব্যবহার করছি এবং @ ডুস্টর্মের কোড (এটির উপরে মন্তব্য) কেবলমাত্র এখানে দেওয়া সমস্ত উত্তর থেকে আমার পক্ষে কাজ করেছে। পুনরাবৃত্তি করতে, নিম্নলিখিতগুলি কমপক্ষে Chrome 8 এবং সাফারিতে আইওএস 8-তে কাজ করে: $("input").focus(function () { this.setSelectionRange(0, 9999); return false; } ).mouseup( function () { return false; });
অ্যারন জেসেন

আমি ব্যবহার করতে হয়েছে focusin, আইওএস 7 এটির জন্য কাজ করতে ফোকাস পরিবর্তে
লুকাস

3

দেখে মনে হচ্ছে ফোকাসটি কাজ করবে তবে কেবল কোনও দেশীয় ইভেন্ট থেকে সরাসরি ডাকা হবে। কল টাইম ফোকাস সেটটাইমআউট জাতীয় কিছু ব্যবহার করে কীবোর্ড কল আপ প্রদর্শিত হবে না। আইওএস কীবোর্ডের নিয়ন্ত্রণ খুব খারাপ। এটি একটি ভাল পরিস্থিতি নয়।


1

নিম্নলিখিতটি অ্যান্ড্রয়েড ২.২ এর সাথে আসে ওয়েবকিটটিতে আমার জন্য কাজ করছে:

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

ক্রোমিয়াম ইস্যু 32865 দেখুন


1

আইপ্যাডে আইওএস 7 এর মাধ্যমে আমি এই কাজটি করতে সক্ষম হয়েছি কেবল তার <textarea></textarea>পরিবর্তে আসলে ব্যবহার করা<input> ক্ষেত্রের ।

যেমন

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

ক্ষেত্রের অভ্যন্তরের পাঠ্য পরিবর্তন থেকে ব্যবহারকারীকে কীভাবে রোধ করা যায় তা আরও কঠিন ছিল, আপনি পাঠ্যপাঠ্য পাঠ্য করেই বাছাইয়ের কৌশল আর কাজ করবে না।


1

আমি এই সমাধানটি খুঁজতে বাদামে গিয়েছিলাম, যখন আপনার সমস্ত প্রতিক্রিয়াগুলি সাহায্য করেছিল আমার জন্য কীটপতঙ্গের আরও একটি ক্যান খুলতে করেছিল।

ক্লায়েন্টটি চেয়েছিল যে ব্যবহারকারীরা ক্লিক করতে এবং সমস্তটি নির্বাচন করতে , এবং ব্যবহারকারীর 'ট্যাব' এবং আইপ্যাডে সমস্ত নির্বাচন করতে সক্ষম হন (একটি বহিস্থিত কীবোর্ড আছে। আমি জানি, পাগল ...)

এই সমস্যার আমার সমাধানটি ছিল, ইভেন্টগুলি পুনরায় সাজানো। প্রথমে ফোকাস , তারপরে ক্লিক করুন , তারপরে টাচস্টার্ট

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

আমি আশা করি এটি কাউকে সহায়তা করে, যেমন আপনি অনেক সময় আমাকে সাহায্য করেছেন।


-4

আপনি যদি এইচটিএমএল 5-কমপ্লায়েন্ট ব্রাউজার ব্যবহার করেন তবে placeholder="xxx"আপনি নিজের inputট্যাগটিতে ব্যবহার করতে পারেন । যে কাজ করা উচিত।


8
আমি মনে করি না এটিই প্রশ্নটি জিজ্ঞাসা করেছিল
ক্যাটারিয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.