如何使用 JavaScript 在點選時選擇 HTML 文字輸入框中的所有文字?


在 Web 開發中,通常需要為使用者提供一種直觀且便捷的方式,以便在他們點選 HTML 文字輸入欄位時選擇該欄位內的所有文字。此功能可以極大地增強使用者體驗,尤其是在處理冗長或預填充的輸入欄位時。在本文中,我們將探討如何使用 JavaScript 實現此功能。

選擇 HTML 文字輸入框中的所有文字意味著什麼?

當用戶點選 HTML 文字輸入欄位時,我們希望該欄位內的所有文字都自動被選中,從而使使用者能夠輕鬆修改或替換內容。此行為可以透過利用 JavaScript 處理點選事件並以程式設計方式選擇文字來實現。

演算法

使用 JavaScript 在點選時選擇 HTML 文字輸入框中所有文字的通用演算法如下:

  • 建立一個 HTML 文字輸入欄位併為其分配一個唯一的 ID。

  • 將事件監聽器附加到 DOMContentLoaded 事件,以確保 JavaScript 程式碼在 HTML 文件完全載入後執行。

  • 在事件監聽器中,使用其 ID 檢索輸入欄位元素並將其分配給變數。

  • 將事件監聽器附加到輸入欄位,偵聽點選事件。

  • 在點選事件回撥函式中,在輸入欄位元素上呼叫 select() 方法。

  • 將 JavaScript 程式碼儲存在單獨的檔案中,並使用 <script> 標記將其包含在 HTML 文件中。

方法 1:使用 select() 方法

select() 方法是一個內建的 JavaScript 函式,用於選擇 HTML 輸入欄位內的所有文字。它簡化了突出顯示輸入欄位整個文字內容的過程,從而可以輕鬆修改或替換。

語法

element.select()

此處,select() 方法在 HTML 輸入元素 (element) 上呼叫,用於選擇輸入欄位內的所有文字。它簡化了突出顯示文字的過程,從而可以輕鬆修改或替換。

示例

在下面的程式碼中,DOMContentLoaded 事件確保僅在 HTML 文件完全載入後才執行 JavaScript 程式碼。我們使用其 ID myInput 檢索輸入欄位元素,並將其分配給 inputField 變數。點選事件監聽器已新增到輸入欄位。當用戶點選該欄位時,將執行提供的回撥函式。在回撥函式中,我們對 inputField 元素呼叫 select() 方法。此方法以程式設計方式選擇輸入欄位內的所有文字。

<!DOCTYPE html>
<html>
<head>
    <title>Select All Text</title>
</head>
<body>
    <input type="text" id="myInput" value="Click to select all text">

    <script>
        window.addEventListener('DOMContentLoaded', (event) => {
            const inputField = document.getElementById('myInput');

            inputField.addEventListener('click', () => {
                inputField.select();
            });
        });
    </script>
</body>
</html>

方法 2:setSelectionRange()

setSelectionRange() 方法是另一個 JavaScript 函式,用於設定文字輸入欄位的選擇範圍。它採用兩個引數:文字範圍的起始位置和結束位置。此方法通常用於現代瀏覽器中,以程式設計方式選擇輸入欄位內的文字。

語法

element.setSelectionRange(start, end)

此處,setSelectionRange() 方法在 HTML 輸入元素 (element) 上呼叫,並設定輸入欄位內文字的選擇範圍。它採用兩個引數:start(選擇的起始位置)和 end(選擇的結束位置)。

示例

<!DOCTYPE html>
<html>
<head>
    <title>Select All Text</title>
</head>
<body>
    <input type="text" id="myInput" value="Click to select all text">

    <script>
        window.addEventListener('DOMContentLoaded', (event) => {
            const inputField = document.getElementById('myInput');

            inputField.addEventListener('click', () => {
                // Method 1: Using setSelectionRange()
                inputField.setSelectionRange(0, inputField.value.length);
               
            });
        });
    </script>
</body>
</html>

方法 3:使用 createTextRange()

createTextRange() 方法是用於在舊版 Internet Explorer (IE) 中選擇輸入欄位內文字的特定方法。它建立一個文字範圍物件,該物件表示輸入欄位中的一段文字。當 setSelectionRange() 方法不可用時,此方法對於 IE 支援是必需的。它允許透過使用 move() 方法設定文字範圍的起始和結束位置來選擇文字,然後使用 select() 方法選擇文字。

語法

element.createTextRange()

此處,createTextRange() 方法在 HTML 輸入元素 (element) 上呼叫,並在舊版 Internet Explorer (IE) 中用於建立表示輸入欄位中一段文字的文字範圍物件。當 setSelectionRange() 方法不可用時,此方法對於 IE 支援是必需的。

示例

<!DOCTYPE html>
<html>
<head>
    <title>Select All Text</title>
</head>
<body>
    <input type="text" id="myInput" value="Click to select all text">

    <script>
        window.addEventListener('DOMContentLoaded', (event) => {
            const inputField = document.getElementById('myInput');

            inputField.addEventListener('click', () => {
                
                
                // Method 2: Using createTextRange() (for IE support)
                if (inputField.createTextRange) {
                    const range = inputField.createTextRange();
                    range.move('character', 0);
                    range.moveEnd('character', inputField.value.length);
                    range.select();
                }
            });
        });
    </script>
</body>
</html>

結論

在本文中,我們討論瞭如何使用 JavaScript 在點選時選擇 HTML 文字輸入框中的所有文字。JavaScript 程式碼首先將事件監聽器附加到 DOMContentLoaded 事件。這確保了回撥函式內的程式碼僅在 HTML 文件載入完成後才執行。getElementById() 函式用於檢索 ID 為“myInput”的輸入欄位元素,並將其分配給 inputField 變數。

更新於: 2023年7月18日

6K+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.