html textarea實現純數字自動換行及去除尾數零
本文介紹如何在HTML中創建一個僅接受純數字輸入的textarea,實現長數字自動換行,并去除尾部多余的零的功能。 我們將使用JavaScript來處理輸入和格式化。
需求分析:
我們需要一個textarea,滿足以下條件:
- 只允許輸入數字和一個小數點: 防止用戶輸入非數字字符。
- 自動換行: 當數字長度超過textarea寬度時自動換行。
- 去除尾部零: 例如,12300.000應轉換為12300。
- 保留原始數據: 在JavaScript中保留未格式化的原始數字值。
解決方案:
立即學習“前端免費學習筆記(深入)”;
我們將使用JavaScript來實現這些功能。以下代碼片段展示了如何創建一個滿足需求的textarea:
<textarea id="numberTextarea" oninput="formatNumber(this)"></textarea> <script> function formatNumber(textarea) { let value = textarea.value; // 1. 只允許數字和小數點 value = value.replace(/[^d.]/g, ''); value = value.replace(/.{2,}/g, '.'); //只允許一個點 // 2. 去除尾部零 value = parseFloat(value).toString(); // 3. 自動換行 (根據textarea寬度調整) let maxLengthPerLine = 10; // 可根據實際需求調整 let formattedValue = ''; for (let i = 0; i < value.length; i += maxLengthPerLine) { formattedValue += value.substring(i, i + maxLengthPerLine) + 'n'; } textarea.value = formattedValue.trim(); //去除末尾換行符 //保留原始數據 (例如,存儲在單獨的變量中) let originalValue = parseFloat(value.replace(/n/g, '')); //移除換行符,轉換為數值 console.log("Original Value:", originalValue); //在控制臺輸出原始值,以便在vue或其他框架中使用 } </script>
代碼解釋:
- oninput 事件監聽器:每當textarea的值發生變化時,都會調用formatNumber函數。
- formatNumber 函數:
改進建議:
- 動態調整 maxLengthPerLine: 可以根據textarea的實際寬度動態計算 maxLengthPerLine,使換行更加精確。
- 錯誤處理: 可以添加錯誤處理,例如當輸入無效時顯示提示信息。
- 框架集成: 此代碼可以輕松集成到Vue.JS或其他JavaScript框架中,通過數據綁定和方法調用來實現更復雜的交互。
這個改進后的方法提供了更健壯和靈活的解決方案,可以更好地滿足實際應用的需求。 記住將 maxLengthPerLine 調整為適合你textarea寬度的值。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END