簡體   English   中英

Javascript 輸入 keyup 第一個值 = "-" 不是 NaN

[英]Javascript input keyup first value = "-" not NaN

在這里我想填充以value "-"開頭的輸入值,如果起始值為數字然后將最后一個"-"添加到值,它會起作用,但在這里我想要在開始時input value "-"而不是在時間input "-"時輸入"NaN" input "-"

這是我的代碼示例:

 $(document).on("keyup change", ".cll_debit", function() { var sum = 0; $(".cll_debit").each(function(){ sum += +$(this).val().replace(/\./g, ""); }); $("#tl_debit").val(sum.toLocaleString("id-ID")); }); var $form = $( ".form" ); var $input = $form.find( "input" ); $input.on( "keyup", function( event ) { var $this = $( this ); var input = $this.val(); var input = input.replace(/[\/az\/AZ\s\._\=\`]+/g, ""); input = input? parseInt( input, 10 ): 0; $this.val( function() { return ( input === 0 )? "": input.toLocaleString("id-ID"); } ); } );
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="form"> <input type="text" class="cll_debit" autocomplete="off" value=""> <input type="text" class="cll_debit" autocomplete="off" value=""> <br><br> <input type="text" id="tl_debit" value="0" readonly> </div>

在這里,我找到了一種沒有 toLocaleString 的方法,但是在input value="-"時它不起作用

 $(document).on("keyup change", ".cll_debit", function() { var sum = 0; $(".cll_debit").each(function(){ sum += +$(this).val().replace(/\./g, ""); }); $("#tl_debit").val(sum.toLocaleString("id-ID")); }); number_format = function (number, decimals, dec_point, thousands_sep) { number = number.toFixed(decimals); var nstr = number.toString(); nstr += ''; x = nstr.split('.'); x1 = x[0]; x2 = x.length > 1? dec_point + x[1]: ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) x1 = x1.replace(rgx, '$1' + thousands_sep + '$2'); return x1 + x2; } var $form = $( ".form" ); var $input = $form.find( "input" ); $input.on( "keyup", function( event ) { var $this = $( this ); var input = $this.val(); var input = input.replace(/\D/g, ""); input = input? parseInt( input, 10 ): 0; $this.val( function() { return number_format(input, '', '.', '.'); } ); } );
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="form"> <input type="text" class="cll_debit" autocomplete="off" value=""> <input type="text" class="cll_debit" autocomplete="off" value=""> <br><br> <input type="text" id="tl_debit" value="0" readonly> </div>

在這里,我添加了一個新的 function,它與 toLocaleString 無關,但也沒有按照我想要的方式工作,輸入值 =“-” 根本沒有工作

你可以試試這個:

 $(document).on("keyup change", ".cll_debit", function() { var sum = 0; $(".cll_debit").each(function(){ sum += +$(this).val().replace(/\\./g, ""); }); $("#tl_debit").val(sum.toLocaleString("id-ID")); }); var $form = $( ".form" ); var $input = $form.find( "input" ); $input.on( "keyup", function( event ) { var $this = $( this ); var input = $this.val(); var input = input.replace(/[\\/az\\/AZ\\s\\._\\=\\`]+/g, ""); if($(this).val().length > 1){ input = input ? parseInt( input, 10 ) : 0; $this.val( function() { return ( input === 0 ) ? "" : input.toLocaleString("id-ID"); } ); }else{ } } );
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="form"> <input type="text" class="cll_debit" autocomplete="off" value=""> <input type="text" class="cll_debit" autocomplete="off" value=""> <br><br> <input type="text" id="tl_debit" value="0" readonly> </div>

將輸入類型從text更改為number ,之后您可以跳過所有值正則表達式檢查。 在那之后減號也能正常工作,代碼會更干凈。
如果您需要更改語言環境,請傳遞 lang 屬性id-IDnavigator.language值。

 $(document).on("keyup change", ".cll_debit", function() { var sum = 0; $(".cll_debit").each(function(){ sum += +$(this).val(); }); $("#tl_debit").val(sum.toLocaleString("id-ID")); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="form"> <input type="number" class="cll_debit" autocomplete="off" lang="id-ID"> <input type="number" class="cll_debit" autocomplete="off" lang="id-ID"> <br><br> <input type="text" id="tl_debit" value="0" readonly> </div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM