HTML中如何實現純數字自動換行并去除尾數零的Number Textarea?

HTML中如何實現純數字自動換行并去除尾數零的Number Textarea?

創建支持自動換行和尾數零去除的html數字文本框

本文介紹如何在HTML中創建一個僅接受數字輸入,并實現自動換行和去除尾數零的數字文本框。 該文本框在顯示時會按每行6位數字進行換行,并去除尾部多余的零,但vue組件的data中仍保留原始數字值。

例如,輸入123456789.234000,文本框顯示:

123456 789.234

Vue組件的data中則保存123456789.234000。

實現此功能需要結合Vue框架和JavaScript正則表達式。 我們使用兩個ref,一個存儲原始數據,另一個存儲格式化后的顯示數據。 輸入事件觸發數據處理函數。

立即學習前端免費學習筆記(深入)”;

以下為Vue組件代碼示例:

<template>   <div>     <textarea ref="textarea_number" @input="keyupNumber"></textarea>     <p>原始數據: {{ textarea_number_data }}</p> </div> </template>  <script> import { ref } from 'vue';  export default {   setup() {     const textarea_number = ref('');     const textarea_number_data = ref('');      const keyupNumber = () => {       // 使用正則表達式去除非數字和多余小數點       textarea_number_data.value = textarea_number.value.replace(/[^d.]/g, '').replace(/.(?=.*.)/g, '');        // 將數字每6位換行,并去除尾部零       let formattedNumber = textarea_number_data.value;       if (formattedNumber) {         const parts = formattedNumber.split('.');         const integerPart = parts[0];         const decimalPart = parts[1] || '';          formattedNumber = integerPart.match(/.{1,6}/g).join('n');         if (decimalPart) {           formattedNumber += `.${decimalPart.replace(/0+$/, '')}`;         }       }       textarea_number.value = formattedNumber;     };      return { textarea_number, textarea_number_data, keyupNumber };   }, }; </script>

代碼中,keyupNumber函數負責數據處理。它首先使用正則表達式清除無效字符,確保只有一個小數點。然后,它將整數部分每6位換行,并去除小數部分尾部的零。 textarea_number_data始終保存原始輸入值。

通過此方法,我們創建了一個滿足要求的HTML數字文本框,兼顧了用戶體驗和數據完整性。

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享