อินพุต jquery เลือกทั้งหมดในการโฟกัส


326

ฉันใช้รหัสนี้เพื่อลองและเลือกข้อความทั้งหมดในฟิลด์เมื่อผู้ใช้เน้นที่ฟิลด์ สิ่งที่เกิดขึ้นคือมันเลือกทั้งหมดเป็นวินาทีจากนั้นจะไม่ได้เลือกและเคอร์เซอร์พิมพ์จะอยู่ตรงที่ฉันคลิก ...

$("input[type=text]").focus(function() {
   $(this).select();
});

ฉันต้องการให้เลือกทั้งหมด


เบราว์เซอร์ใดที่ทำงานได้ดีสำหรับฉันใน FF
R0MANARMY

8
Chrome = ล้มเหลวสำหรับอันนี้
wowo_999

1
ผมใช้ Chrome แต่จำนวนคลิก () แก้ปัญหา :)
ทิม

4
หมายเหตุ: คำตอบที่ยอมรับได้ที่นี่แก้ปัญหาได้เพียงครึ่งเดียว ทำให้การเลือกทำงานได้ แต่ทำให้ยากต่อการยกเลิกการเลือกด้วยการคลิกครั้งต่อไป ทางออกที่ดีกว่าสามารถพบได้ที่นี่: stackoverflow.com/questions/3380458/…
SDC

คำตอบ:


480

ลองใช้แทนclick focusดูเหมือนว่าใช้ได้กับทั้งเมาส์และเหตุการณ์สำคัญ (อย่างน้อยใน Chrome / Mac):

jQuery <เวอร์ชั่น 1.7:

$("input[type='text']").click(function () {
   $(this).select();
});

jQuery เวอร์ชั่น 1.7+:

$("input[type='text']").on("click", function () {
   $(this).select();
});

นี่คือตัวอย่าง


62
ปัญหาคือคุณไม่สามารถเลือกส่วนของข้อความด้วยเมาส์ได้อีกต่อไปเมื่อคลิกเกิดขึ้นข้อความทั้งหมดจะถูกเลือก
Helin Wang

6
ไม่ใช่ทางออกสำหรับฉัน สิ่งนี้สร้างปัญหาที่อธิบายโดย Wang
Marquez

1
มีวิธีแก้ปัญหาด้านล่างโดย Nianpeng ที่ใช้ได้กับการเลือกข้อความเมาส์
Philibert Perusse

4
@AwQiruiGuo $ .fn.on ('คลิก', .. ) สามารถใช้หน่วยความจำน้อยลงและทำงานกับองค์ประกอบลูกที่เพิ่มเข้ามาแบบไดนามิก
Ricky Boyce

7
สิ่งนี้ใช้ไม่ได้กับการโฟกัสฟิลด์เมื่อแท็บ
โคลิน Breame

65

ฉันคิดว่าสิ่งที่เกิดขึ้นคือ:

focus()
   UI tasks related to pre-focus
   callbacks
       select()
   UI tasks related to focus (which unselect again)

วิธีแก้ปัญหาอาจเรียกใช้ select () แบบอะซิงโครนัสเพื่อให้ทำงานได้อย่างสมบูรณ์หลังจากการโฟกัส ():

$("input[type=text]").focus(function() { 
    var save_this = $(this);
    window.setTimeout (function(){ 
       save_this.select(); 
    },100);
});

3
$ ("input [type = text]"). focus (ฟังก์ชั่น () {var save_this = $ (นี้); window.setTimeout (ฟังก์ชั่น () {save_this.select ();}, 100);});
etienne

@etienne: โอ้จุดดี: การจัดการthisที่ไม่คาดคิดในขอบเขตดังกล่าว ฉันจะอัปเดตรหัส
Piskvor ออกจากอาคาร

3
ค่าการหมดเวลาเป็น 0 ก็โอเคเช่นกันและฟังก์ชั่น "focusin ()" ก็ทำงานด้วยวิธีนี้
Tanguy

4
ใช่คุณไม่จำเป็นต้องตั้งเวลา 0 จะทำได้ดีเนื่องจากหมดเวลาทำงานเมื่อสิ้นสุดการโทรปัจจุบัน ซึ่งหมายความว่าการโฟกัสและคลิกเหตุการณ์ทั้งหมดเกิดขึ้นจากนั้นฟังก์ชันของคุณจะทำงาน
Joshua Bambrick

1
การหมดเวลา 0 ดูเหมือนว่าจะมีปัญหาว่าเหตุการณ์ 'คลิก' สามารถเริ่มทำงานในเฟรมต่อมาโดยยกเลิกการเลือกกล่องอีกครั้ง ฉันพบว่าการหมดเวลา 10 ดูเหมือนว่าจะทำงานได้ดี - ไม่ล่าช้าอย่างเห็นได้ชัด แต่เชื่อถือได้มากกว่า 0
philh

57

ฉันคิดว่านี่เป็นทางออกที่ดีกว่า ซึ่งแตกต่างจากการเลือกเพียงแค่ในเหตุการณ์ onclick มันไม่ได้ป้องกันการเลือก / แก้ไขข้อความด้วยเมาส์ มันทำงานร่วมกับเอ็นจิ้นการเรนเดอร์หลัก ๆ รวมถึง IE8

$('input').on('focus', function (e) {
    $(this)
        .one('mouseup', function () {
            $(this).select();
            return false;
        })
        .select();
});

http://jsfiddle.net/25Mab/9/


4
ใช้งานได้กับฟิลด์ที่มีอยู่เท่านั้นนี่คือการอัปเดตสำหรับเชื่อมโยงกับฟิลด์อินพุตใหม่: jsfiddle.net
adriaan

บางครั้งสามารถโฟกัสได้โดยไม่ต้องคลิกและมันก็จัดการได้ดี ด้วยเหตุนี้ฉันจึงเป็นคำตอบที่สะอาดที่สุด - แม้ว่าอาจมีผู้ฟังเหตุการณ์ที่น่าสนใจทุกครั้งที่มีการป้อนข้อมูลและไม่ได้รับการคลิก ... ดีกว่า setTimeout
ilovett

สิ่งนี้ไม่อนุญาตให้คลิกครั้งที่สองภายในอินพุตตัวเลขเพื่อเลือกส่วนอื่นของข้อความด้วยเมาส์ การลบที่สองselect()ดูเหมือนว่าจะทำงานได้
dperish

ดียิ่งขึ้นด้วยการเพิ่มเติม$('input[autofocus]').select();
Daniel Bleisteiner

38

มีบางคำตอบที่ดีที่นี่และ @ user2072367 เป็นที่ชื่นชอบของฉัน แต่มันมีผลลัพธ์ที่ไม่คาดคิดเมื่อคุณมุ่งเน้นไปที่แท็บแทนที่จะคลิกผ่าน (ผลลัพธ์ที่ไม่คาดคิด: เมื่อต้องการเลือกข้อความตามปกติหลังจากโฟกัสผ่านแท็บคุณต้องคลิกอีกหนึ่งครั้ง)

ซอนี้แก้ไขข้อผิดพลาดเล็ก ๆ และเก็บ $ (สิ่งนี้) ในตัวแปรเพื่อหลีกเลี่ยงการเลือก DOM ที่ซ้ำซ้อน ลองดูสิ! (:

ทดสอบใน IE> 8

$('input').on('focus', function() {
    var $this = $(this)
        .one('mouseup.mouseupSelect', function() {
            $this.select();
            return false;
        })
        .one('mousedown', function() {
            // compensate for untriggered 'mouseup' caused by focus via tab
            $this.off('mouseup.mouseupSelect');
        })
        .select();
});

2
+1 โซลูชันของคุณและ @ user2072367 นั้นสะอาดที่สุดในชุดข้อความทั้งหมดนี้และฉันหวังว่าจะมีวิธีในการเข้าถึงจุดสูงสุดได้เร็วขึ้น
KyleMit

1
ใช้งานได้แม้ว่าผู้ใช้จะพยายามเลือกข้อความทั้งหมดด้วยตัวเองไชโย
Vitani

สำหรับฉันมันใช้ไม่ได้กับ ie11 บน windows 8.1 มันใช้งานได้เช่น ie11 บน windows 7 และ windows 10
Lars Thomas Bredland

1
@ LarsThomasBredland ฉันเพิ่งลองใช้ win 8.1 + ie11 และใช้งานได้ตามที่คาดไว้ อะไรที่ "ไม่ได้ผล" สำหรับคุณ
animatedgif

มันไม่ได้เลือกอะไรเลย (ผมทดสอบบน Win8 อื่นและมันไม่ทำงานมี - ระดับระบบปฏิบัติการเดียวกันและรุ่น IE)
ลาร์สโทมัส Bredland

21

หลังจากตรวจสอบอย่างรอบคอบฉันเสนอสิ่งนี้เป็นวิธีแก้ปัญหาไกลสะอาดภายในหัวข้อนี้

$("input").focus(function(){
    $(this).on("click.a keyup.a", function(e){      
        $(this).off("click.a keyup.a").select();
    });
});

สาธิตใน jsFiddle

ปัญหา:

นี่คือคำอธิบายเล็กน้อย:

ก่อนอื่นมาดูลำดับเหตุการณ์เมื่อคุณวางเมาส์หรือแท็บลงในช่อง
เราสามารถบันทึกกิจกรรมที่เกี่ยวข้องทั้งหมดดังนี้:

$("input").on("mousedown focus mouseup click blur keydown keypress keyup change",
              function(e) { console.log(e.type); });

เน้นกิจกรรม

หมายเหตุ : ฉันได้เปลี่ยนวิธีแก้ปัญหานี้เพื่อใช้งานclickมากกว่าmouseupที่จะเกิดขึ้นในภายหลังในท่อส่งเหตุการณ์และดูเหมือนว่าจะก่อให้เกิดปัญหาบางอย่างใน firefox ตามความคิดเห็นของ @ Jocie

เบราว์เซอร์บางตัวพยายามวางตำแหน่งเคอร์เซอร์ระหว่างmouseupหรือclickเหตุการณ์ สิ่งนี้สมเหตุสมผลแล้วเนื่องจากคุณอาจต้องการเริ่มเครื่องหมายรูปหมวกในตำแหน่งเดียวและลากเพื่อเน้นข้อความบางส่วน ไม่สามารถกำหนดตำแหน่งลูกศรได้จนกว่าคุณจะยกเมาส์ขึ้นจริง ดังนั้นฟังก์ชั่นที่จัดการfocusจะโชคชะตาที่จะตอบสนองเร็วเกินไปออกจากเบราว์เซอร์เพื่อแทนที่ตำแหน่งของคุณ

แต่ถูคือเราต้องการจัดการกับเหตุการณ์โฟกัส มันช่วยให้เรารู้ว่าครั้งแรกที่มีคนเข้ามาในสนาม หลังจากจุดนั้นเราไม่ต้องการแทนที่พฤติกรรมการเลือกของผู้ใช้ต่อไป

การแก้ไขปัญหา:

แต่ภายในfocusตัวจัดการเหตุการณ์เราสามารถแนบผู้ฟังสำหรับเหตุการณ์click(คลิกเข้า) และkeyup(แท็บใน) แทนเหตุการณ์ที่กำลังจะเริ่มขึ้น

หมายเหตุ : การกดคีย์ของเหตุการณ์แท็บจะเริ่มขึ้นจริงในฟิลด์อินพุตใหม่ไม่ใช่คีย์ก่อนหน้า

เราต้องการไฟเหตุการณ์เพียงครั้งเดียว เราสามารถใช้.one("click keyup)แต่ตอนนี้จะเรียกตัวจัดการเหตุการณ์ครั้งสำหรับแต่ละประเภทเหตุการณ์ เราจะเรียกฟังก์ชันของเราแทนทันทีที่กดปุ่มเม้าส์หรือคีย์ สิ่งแรกที่เราจะทำคือลบตัวจัดการสำหรับทั้งสอง ด้วยวิธีนี้มันจะไม่สำคัญว่าเราจะแท็บหรือ moused ในฟังก์ชั่นควรดำเนินการเพียงครั้งเดียว

หมายเหตุ : เบราว์เซอร์ส่วนใหญ่เลือกข้อความทั้งหมดในระหว่างเหตุการณ์แท็บ แต่เมื่อanimatedgif ชี้ให้เห็นเรายังคงต้องการจัดการkeyupเหตุการณ์ไม่เช่นนั้นmouseupกิจกรรมจะยังคงวนเวียนอยู่ตลอดเวลาที่เราแท็บเราฟังทั้งคู่เพื่อให้เราสามารถเปลี่ยนได้ ปิดผู้ฟังทันทีที่เราประมวลผลการเลือก

ตอนนี้เราสามารถโทรหาselect()หลังจากที่เบราว์เซอร์ทำการเลือกเพื่อให้แน่ใจว่าจะแทนที่พฤติกรรมเริ่มต้น

ในที่สุดเพื่อการปกป้องเป็นพิเศษเราสามารถเพิ่มเนมสเปซของเหตุการณ์ในmouseupและkeyupฟังก์ชั่นเพื่อให้.off()วิธีการไม่ลบผู้ฟังอื่น ๆ ที่อาจจะเล่น


ผ่านการทดสอบใน IE 10+, FF 28+ และ Chrome 35+


อีกทางเลือกหนึ่งถ้าคุณต้องการขยาย jQuery ด้วยฟังก์ชั่นที่เรียกonceว่าจะทำงานหนึ่งครั้งสำหรับเหตุการณ์ใด ๆ :

$.fn.once = function (events, callback) {
    return this.each(function () {
        var myCallback = function (e) {
            callback.call(this, e);
            $(this).off(events, myCallback);
        };
        $(this).on(events, myCallback);
    });
};

จากนั้นคุณสามารถลดความซับซ้อนของรหัสเพิ่มเติมเช่นนี้:

$("input").focus(function(){
    $(this).once("click keyup", function(e){      
        $(this).select();
    });
});

การสาธิตในซอ


ใน Firefox 31 บน Windows โค้ดของคุณจะเลือกข้อความในการคลิกอื่น ๆ ทุกครั้งเมื่อคุณคลิกระหว่างกล่องข้อความทั้งสอง
Vitani

1
@Jocie ผมไม่แน่ใจว่าทำไมมันเป็นสลับ แต่ดูเหมือนว่า FF จัดการเลือกข้อความในเหตุการณ์ซึ่งเป็นต่อไปลงท่อกว่าclick mouseupเนื่องจากเราต้องการจัดการจุดสิ้นสุดของการเลือกให้ช้าที่สุดเท่าที่จะเป็นไปได้เพื่อให้เรามีโอกาสมากที่สุดในการเอาชนะเบราว์เซอร์การใช้การคลิกแทนการคลิกเมาส์จึงควรทำการหลอกลวง ทดสอบใน FF, Chrome และ IE
KyleMit

1
ขอบคุณ! ในที่สุดโซลูชั่นที่ใช้งานได้จริงและในเบราว์เซอร์ทั้งหมด!
Vincent

1
ใช่ มันก็ใช้ได้กับฉันเช่นกัน! ขอบคุณ. นี่ควรเป็นคำตอบอย่างเป็นทางการ
Fandango68

1
@ RiZKiT oneจะไม่ตัดมันเป็น "ตัวจัดการจะถูกดำเนินการหนึ่งครั้งต่อองค์ประกอบต่อประเภทเหตุการณ์มันจะปิดกิจกรรมที่ยิงออกโดยอัตโนมัติ แต่อีกคนจะยังคงวนเวียนoffอยู่ คำถาม: ฟังก์ชั่นที่จะทำการยิงหนึ่งครั้งต่อเหตุการณ์จำนวนหนึ่ง
KyleMit

13

สิ่งนี้จะทำงานและหลีกเลี่ยงปัญหาที่คุณไม่สามารถเลือกส่วนของข้อความด้วยเมาส์ได้อีกต่อไป

$("input[type=text]").click(function() {
    if(!$(this).hasClass("selected")) {
        $(this).select();
        $(this).addClass("selected");
    }
});
$("input[type=text]").blur(function() {
    if($(this).hasClass("selected")) {
        $(this).removeClass("selected");
    }
});

1
สิ่งสำคัญเพื่อให้ความสามารถในการเลือกส่วนของข้อความด้วยเมาส์ ฉันใช้สิ่งนี้และ A1
Philibert Perusse

2
เกิดขึ้นที่นี่มากเกินไปให้ใช้โซลูชันการโฟกัส / การ
George

@George user2072367's ค่อนข้างดี แต่มีข้อบกพร่องบางอย่าง ลองดูโซลูชันของฉัน (:
animatedgif

6

เวอร์ชันนี้ใช้งานได้กับ ios และแก้ไขการลากเพื่อเลือกมาตรฐานบน windows chrome

var srcEvent = null;

$("input[type=text],input[type=number]")

    .mousedown(function (event) {
        srcEvent = event;
    })

    .mouseup(function (event) {
        var delta = Math.abs(event.clientX - srcEvent.clientX) 
                  + Math.abs(event.clientY - srcEvent.clientY);

        var threshold = 2;
        if (delta <= threshold) {
                   try {
                        // ios likes this but windows-chrome does not on number fields
                        $(this)[0].selectionStart = 0;
                        $(this)[0].selectionEnd = 1000;
                    } catch (e) {
                        // windows-chrome likes this
                        $(this).select();
                    }
        }
    });

http://jsfiddle.net/Zx2sc/2/


แก้ไขเพื่อเพิ่มลอง / จับน่าเกลียดเพื่อเอาใจเบราว์เซอร์
anihilnine

5

ปัญหาของการแก้ปัญหาส่วนใหญ่คือพวกเขาทำงานไม่ถูกต้องเมื่อเปลี่ยนตำแหน่งเคอร์เซอร์ภายในช่องใส่

onmouseupเหตุการณ์การเปลี่ยนแปลงตำแหน่งเคอร์เซอร์ภายในเขตซึ่งจะไล่ออกหลังจากonfocus(อย่างน้อยภายใน Chrome และ FF) หากคุณยกเลิกโดยไม่มีเงื่อนไขmouseupผู้ใช้จะไม่สามารถเปลี่ยนตำแหน่งเคอร์เซอร์ด้วยเมาส์ได้

function selectOnFocus(input) {
    input.each(function (index, elem) {
        var jelem = $(elem);
        var ignoreNextMouseUp = false;

        jelem.mousedown(function () {
            if (document.activeElement !== elem) {
                ignoreNextMouseUp = true;
            }
        });
        jelem.mouseup(function (ev) {
            if (ignoreNextMouseUp) {
                ev.preventDefault();
                ignoreNextMouseUp = false;
            }
        });
        jelem.focus(function () {
            jelem.select();
        });
    });
}
selectOnFocus($("#myInputElement"));

รหัสจะป้องกันmouseupพฤติกรรมเริ่มต้นแบบมีเงื่อนไขหากฟิลด์ไม่ได้มีโฟกัสในขณะนี้ มันใช้งานได้กับกรณีเหล่านี้:

  • คลิกที่เมื่อไม่ได้เน้นสนาม
  • คลิกที่เมื่อสนามมีโฟกัส
  • แท็บลงในฟิลด์

ฉันได้ทำการทดสอบภายใน Chrome 31, FF 26 และ IE 11 แล้ว


สิ่งนี้ทำงานได้อย่างสมบูรณ์แบบสำหรับกิจกรรมการคลิก แต่ถ้าฉันใช้แท็บเพื่อย้ายไปยังฟิลด์ป้อนข้อมูลถัดไปฉันจะเห็นว่าเนื้อหาได้รับการเลือกและยกเลิกการเลือกในภายหลัง
ToX 82

4

พบวิธีแก้ไขปัญหาที่ยอดเยี่ยมในการอ่านหัวข้อนี้

$(function(){

    jQuery.selectText('input:text');
    jQuery.selectText('input:password');

});

jQuery.extend( {
    selectText: function(s) { 
        $(s).live('focus',function() {
            var self = $(this);
            setTimeout(function() {self.select();}, 0);
        });
    }
});

... ซึ่งเป็นหลักคำตอบเดียวกับ Piskvor
Oliver

อย่าลืมประเภทข้อความ HTML5 อื่น ๆ ทั้งหมดเช่น 'input [type = email]'
jamiebarrow

3

ฉันมาจากปลายปี 2016 และรหัสนี้ใช้ได้กับ jquery รุ่นล่าสุด (jquery-2.1.3.js ในกรณีนี้)

if ($(element).is("input")) {
    $(element).focus(function () {
        $(element).select();
    });
}

2

ฉันใช้ FF 16.0.2 และ jquery 1.8.3 โค้ดทั้งหมดในคำตอบไม่ทำงาน
ฉันใช้รหัสเช่นนี้และทำงาน

$("input[type=text]").focus().select();

4
นี้ไม่ได้ตอบคำถามซึ่งเป็นวิธีการเลือกเนื้อหาของกล่องใส่เมื่อผู้ใช้มุ่งเน้นไปที่สนาม นี่จะเป็นการเน้นและเลือกรหัสทันทีโดยไม่ต้องป้อนข้อมูลผู้ใช้
saluce

@saluce ฉันไม่เข้าใจว่าคุณหมายถึงอะไร? สิ่งที่ผู้ถามต้องการคือเมื่อเขาเลือกฟิลด์ข้อความปัจจุบันทั้งหมดจะถูกเลือก และรหัสของฉันควรทำอย่างนั้น ฉันยังใช้สำหรับโครงการของฉันเป็นเวลาที่ฉันเขียนคำตอบนี้
GusDeCooL

1
รหัสนี้จะมุ่งเน้นและเลือกทุกอย่างเมื่อมันทำงาน แต่รหัสในและของตัวเองไม่ได้เชื่อมโยงกับเหตุการณ์ที่ผู้ใช้สร้างขึ้นเช่นการคลิกที่กล่องข้อความ ตัวอย่างเช่น$("input[type=text]").on('click', function () { $(this).focus.select(); })ทำให้เกิดการโฟกัสและเลือกที่จะเกิดขึ้นเมื่อผู้ใช้คลิกที่กล่องเพราะมันจะถูกดำเนินการเมื่อผู้ใช้คลิกที่กล่อง หากไม่มีตัวจัดการเหตุการณ์รหัสจะไม่ตอบคำถามดังนั้น downvote และแสดงความคิดเห็น โดยทั่วไปคุณจะได้รับ "ข้อความปัจจุบันทั้งหมดถูกเลือก" แต่ไม่ใช่ส่วน "เมื่อเขาเลือกฟิลด์"
saluce

1
@GusDeCooL ขันพอ (แม้ว่านี้ไม่ได้เป็นสิ่งที่เขาถาม) ผมอยากจะผลเช่นเดียวกับที่คุณทำบนนี้ :)
ร็อบบี้ Averill

2
var timeOutSelect;
$("input[type=text]").focus(function() { 
        var save_this = $(this);
        clearTimeout(timeOutSelect);
        timeOutSelect = window.setTimeout (function(){ 
                save_this.select(); 
        }, 100);
});

ใช้ clearTimeout เพื่อความปลอดภัยมากขึ้นหากคุณสลับระหว่างสองอินพุตอย่างรวดเร็ว .. clearTimeout ล้างการหมดเวลาเก่า ...


โปรดแก้ไขด้วยข้อมูลเพิ่มเติม รหัสเท่านั้นและคำตอบ "ลองนี้" จะหมดกำลังใจเพราะพวกเขาไม่มีเนื้อหาที่ค้นหาได้และไม่ได้อธิบายว่าทำไมบางคนควร "ลองนี้" เราใช้ความพยายามที่นี่เพื่อเป็นแหล่งข้อมูลสำหรับความรู้
Brian Tompsett - 汤莱恩

2

ทำงานที่ดีกับชาวพื้นเมือง select()JavaScript

$("input[type=text]").focus(function(event) {
   event.currentTarget.select();
});

หรือโดยทั่วไป:

$("input[type=text]")[0].select()

1

หรือคุณสามารถใช้<input onclick="select()">งานได้สมบูรณ์แบบ


ไม่มันไม่ มันใช้งานได้สำหรับการเลือกทั้งหมด แต่พยายามเลือกส่วนของข้อความด้วยตนเองคุณจะไม่สามารถทำได้
Sujay Phadke


0
<script>$.ready( $("input[type=text]").attr("onclick" , "this.select()"));<script>

สิ่งนี้อาจถูกทำเครื่องหมายเป็นคำตอบคุณภาพต่ำเพราะไม่มีคำอธิบายว่าเกิดอะไรขึ้น
tumultous_rooster

คุณ$.readyไม่ถูกต้อง คุณต้องผ่านฟังก์ชั่นการทำงานเพื่อทำให้หน่วงเวลาattrจนกว่าเอกสารจะพร้อมใช้งาน $.readyคุณกำลังทำมันทันทีแล้วผ่านคอลเลกชันองค์ประกอบที่จะ
doug65536

นอกจากนี้หลีกเลี่ยง 'onclick' โดยเฉพาะอย่างยิ่งด้วยวิธีนี้ addEventListenerใช้
doug65536

0

ฉันมักจะใช้requestAnimationFrame()เพื่อข้ามกลไกการโพสต์เหตุการณ์ภายในและสิ่งนี้ทำงานได้อย่างสมบูรณ์ใน Firefox ยังไม่ได้ทดสอบใน Chrome

$("input[type=text]").on('focus', function() {
    requestAnimationFrame(() => $(this).select());
});
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.