2017-09-05 1 views
2

こんにちは私は自分のスクリプトに問題があります。すべてのテキストボックスのすべての結果をすべてのテキストボックスで同時に変更したいと思います。すべての計算されたテキストボックスの小数点以下を切り捨てる2

私は、テキストボックスのすべての変更/入力後に切り捨てる何百ものテキストボックスについて話しています。

とにかくここに私の作品のサンプルコードがあります。

HTML:

<input type="text" id="textbox" value="1.1251112314555" /> 
<br/> 
<input type="text" id="textbox2" value="1" /> 
<br/> 
<input type="text" id="textbox3" value="1" readonly/> 
<br/> 
<input type="text" id="textbox4" value="1" readonly/> 
<br/> 

Javascriptを:

$("input[type=text]").blur(function() { 

    totalad3 = parseInt(textbox) * parseInt(textbox2); 
    totalad4 = parseInt(textbox) + parseInt(textbox2); 

    $('#textbox3').val(totalad3); 
    $('#textbox4').val(totalad4+"%");  

    var num = parseFloat($("input[type=text]").val()); 
    var new_num = $("input[type=text]").val(num.toFixed(2)); 
}); 

enter image description here

+1

2つのこと:1. JavaScriptとjQueryは、互いの選択肢ではありません。あなたは "With the DOM"と "With jQuery"を意味していますあなたはJavaScriptをどちらかの方法で使います2.あなたは "with the DOM"と "with jQuery"を逆戻りしていますgetElementById'はDOMを直接使用しています。 ...) 'jQueryを使用しています –

+0

「作業していません」とはどういう意味ですか? –

+0

どのプロセスがテキストボックスにデータを取り込みますか?そのプロセスに丸めを適用せずに10進マスクをテキストボックスに適用して、最初に小数点を置くのですか? – Nope

答えて

3

あなたはハンドラ関数では、任意の入力のblurイベントに丸めた値を使用して、各入力の値を更新する場合すべての入力を取得し、各入力を繰り返し、その値を変更します。このような何か:

$('input[type=text]').on('blur', function() { 
 
    var inputs = $('input[type=text]'); 
 
    inputs.each(function(){ 
 
     var num = parseFloat($(this).val()); 
 
     var new_num = num.toFixed(2); 
 
     $(this).val(new_num); 
 
}) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input type="text" id="textbox" value="1.1251112314555" /> 
 
<br/> 
 
<input type="text" id="textbox2" value="1" /> 
 
<br/> 
 
<input type="text" id="textbox3" value="1" readonly/> 
 
<br/> 
 
<input type="text" id="textbox4" value="1" readonly/> 
 
<br/> 
 
<input type="button" id="calculate" value="Calculate"/>

+0

これは私が探しているものです。私は計算にそれを適用しようとしています、ありがとう! –

+1

大変ありがとうございます@Dijあなたのコードは私のスクリプトで完璧に動作します。本当にありがとうございます。 –

0
テキスト上のすべての変更/入力した後に四捨五入されますテキストボックスの

数百ボックス。私が正しくあなたの条件を理解していれば

..

$("input[type=text]").blur(function() { 
 
     
 
     \t // console.log("Which textbox has changes?", $(this).val()); 
 
      
 
     // Get current input value 
 
     var currentInputValue = parseFloat($(this).val()); 
 
      
 
     // Round them to 2 decimal 
 
     var roundedValue = currentInputValue.toFixed(2); 
 
      
 
     // Update back to textbox 
 
     $(this).val(roundedValue); 
 
      
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="textbox" value="1.1251112314555" /> 
 
<br/> 
 
<input type="text" id="textbox2" value="1" /> 
 
<br/> 
 
<input type="text" id="textbox3" value="1" readonly/> 
 
<br/> 
 
<input type="text" id="textbox4" value="1" readonly/> 
 
<br/> 
 
<input type="text" id="textbox5" value="123.2323" /> 
 
<br/> 
 
<input type="text" id="textbox6" value="1.444" /> 
 
<br/> 
 
<input type="text" id="textbox7" value="23.23235" /> 
 
<br/> 
 
<input type="button" id="calculate" value="Calculate"/>

+0

はい私はいくつかのテキストボックスに多くのテキストボックスを設定しています。私が欲しがっているのは、すでに行った計算の後でのみ小数点以下第2位を四捨五入することです。私は何をしたいのですか?スクリプトはすべてのテキストボックスに対して実行されます。 –

0

地図機能でArray.fromを使用して別の方法。

<script type="text/javascript"> 
    $(function() { 
     $("input[type=text]").on('blur', function(){ 
      Array.from($("input[type=text]"), (el, i) => $(el).val(parseFloat($(el).val()).toFixed(2))); 
     }) 
    }); 
</script> 

<input type="text" id="textbox" value="1.1251112314555" /> 
<br/> 
<input type="text" id="textbox2" value="1" /> 
<br/> 
<input type="text" id="textbox3" value="1" readonly/> 
<br/> 
<input type="text" id="textbox4" value="1" readonly/> 
<br/> 
<input type="button" id="calculate" value="Calculate" /> 
関連する問題