[英]How to fire blur event in jquery
我具有模糊事件的功能,並使用正則表達式來替換模糊事件的輸入值。 但是我有一個問題,當輸入字段讀取下一個事件模糊時,模糊事件仍在運行它,並使我的正則表達式運行兩次並產生NaN,我非常感謝您的幫助。 這是我的代碼如下:
$(document).ready(function(){ $('#myNumber').on('blur', function ({target}) { if ($(this).val()) { let number = parseInt($(this).val()); const num = '$ ' + number.toFixed(2).replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, "$1,"); $(this).val(num); } }); })
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> <script src="https://code.jquery.com/jquery-1.9.1.js"></script> </head> <body> <input type="text" id="myNumber"> </body> </html>
這是因為在第一次blur
事件執行后,您有$
符號。
從您的js
函數中刪除它。
$(document).ready(function(){ $('#myNumber').on('blur', function ({target}) { if ($(this).val()) { let number = parseInt($(this).val()); const num = number.toFixed(2).replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, "$1,"); $(this).val(num); } }); })
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> <script src="https://code.jquery.com/jquery-1.9.1.js"></script> </head> <body> <span>$</span><input type="text" id="myNumber"> </body> </html>
$('#myNumber').on('blur', function ({target}) { if ($(this).val()) { var numberValue = $(this).val().trim(); if(numberValue.charAt(0) == '$') { var numberValue1 = $(this).val().trim().slice(2); let number = parseInt(numberValue1); const num = '$ ' + number.toFixed(2).replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, "$1,"); $(this).val(num); } else { let number = parseInt($(this).val()); const num = '$ ' + number.toFixed(2).replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, "$1,"); $(this).val(num); } } });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" id="myNumber">
問題在於,當您第二次獲得該值時,它在val()
具有一個“ $”,因此它不是數字,並且會引起NaN
問題。 每次進入函數內部時,都應替換符號。 我也將const num =
更改為var num = ...
因為我不確定使用會改變的const是否好...
$(document).ready(function(){ $('#myNumber').on('blur', function ({target}) { if ($(this).val()) { let number = parseInt($(this).val().replace('$','')); var num = number.toFixed(2).replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, "$1,"); num = '$ ' + num; $(this).val(num); } }); })
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> <script src="https://code.jquery.com/jquery-1.9.1.js"></script> </head> <body> <input type="text" id="myNumber"> </body> </html>
檢查這個小提琴 ..
添加此js ..
$(document).ready(function(){ $('#myNumber').on('blur', function ({target}) { if ($(this).val()) { let number = parseInt($(this).val()); const num = number.toFixed(2).replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, "$1,"); $(this).val(num); } }); });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.