2017-12-28 13 views
-2

変更された値では動作しません:Javascriptが私は、この入力を得た

<input name='num2' type='number' id=num2 onblur="checkValue(this)"> 
     <script> 
    function checkValue(input) { 
    console.log(input.value); 
    if (input.value > 20) { 
    return input.value = 20; 
    } else if (input.value < 0){ 
    return input.value = 0; 
    } else if (input.value == '' || isNaN(input.value)) { 
    return input.value = 0; 
    } else { 
    return input.value; 
    } 
} 
$("#num1, #num2").focusout(function() { 
    $("#answer").html(''); 
    var num1 = $("#num1").val(); 
    var num2 = $("#num2").val(); 
    var answer = num1 * num2; 
    $("#answer").html(answer); 
}); 
     </script> 

問題は、私は数を書くときwhitchよりも高い20ので、入力値の変化ですが、JavaScriptがまだでカウントし続けることです私が書き込む数字は、何百万というものだった。しかし、私はそのJavaScriptの値をonblurで変更したいと思っている。私が正しい方法で行くなら、少なくとも私に見せてください。あるいは、私は他のスクリプトを使うべきですか?

+1

返信文 – epascarello

+0

を使用すると、番号を調整した後でイベントがトリガーされても意味がありません。 – epascarello

答えて

0

以下のコードを実行すると、ハンドブックの前にonblurというハンドラと表示されます。

function checkValue(input) { 
 
    console.log('blur', input.value); 
 
    if (input.value > 20) { 
 
    input.value = 20; 
 
    } 
 
    else if (input.value < 0){ 
 
    input.value = 0; 
 
    } 
 
    else if (input.value == '' || isNaN(input.value)) { 
 
    input.value = 0; 
 
    } 
 
    else { 
 
    input.value; 
 
    } 
 

 
} 
 
$("#num1, #num2").focusout(
 
    function() { 
 
    $("#answer").html(''); 
 
    var num1 = $("#num1").val(); 
 
    var num2 = $("#num2").val(); 
 
    var answer = num1 * num2; 
 
    console.log('focusout', num1, num2, answer); 
 
    $("#answer").html(answer); 
 
    } 
 
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input name='num1' type='number' id=num1> 
 
<input name='num2' type='number' id=num2 onblur="checkValue(this)"> 
 
<div id="answer"></div>

だからあなたはあなたがあなたのanswerを計算後までnum2に数を制限されていません。

あなたのロジックを移動してをonblurハンドラ内に制限する必要があります。

UPDATE

以下の例では、合計を計算する前に、両方の入力フィールドに制限を設定します。

これらの例のいずれもお望みでない場合は、希望の結果を説明してください。

function checkValue(input) { 
 
    console.log('blur', input.value); 
 
    if (input.value > 20) { 
 
    input.value = 20; 
 
    } 
 
    else if (input.value < 0){ 
 
    input.value = 0; 
 
    } 
 
    else if (input.value == '' || isNaN(input.value)) { 
 
    input.value = 0; 
 
    } 
 
    else { 
 
    input.value; 
 
    } 
 

 
} 
 
$("#num1, #num2").focusout(
 
    function() { 
 
    $("#answer").html(''); 
 
    var $num1 = $("#num1"); 
 
    var $num2 = $("#num2"); 
 
    checkValue($num1[0]); 
 
    checkValue($num2[0]); 
 
    var num1 = $num1.val(); 
 
    var num2 = $num2.val(); 
 
    var answer = num1 * num2; 
 
    console.log('focusout', num1, num2, answer); 
 
    $("#answer").html(answer); 
 
    } 
 
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input name='num1' type='number' id=num1 onblur="checkValue(this)"> 
 
<input name='num2' type='number' id=num2 onblur="checkValue(this)"> 
 
<div id="answer"></div>

+0

回答ありがとうございますが、あなたの方法**は私のために働いていません** –

+0

何が失敗しているのか分からないと助けません。 – Intervalia

0

ソリューションは、真のは、私は場合により多くの価値を追加する必要があったこと..です:) ..このトピックのため申し訳ありません非常に簡単だった,,誰かがより良い結果が直接持っている場合投稿を投稿する

<input name="num1" type='number' id=num1 value="<?php echo round($final5, 2); ?>" disabled><br /> 
<input name='num2' type='number' id=num2 onblur="checkValue(this)"> 
     <script> 
    function checkValue(input) { 
    console.log(input.value); 
    if (input.value > 10) { 
    return input.value = 10; 
    } else if (input.value < 0.09){ 
    return input.value = 0.1; 
    } else { 
    return input.value; 
    } 

} 

$("#num1, #num2").focusout(function() { 
    $("#answer").html(''); 
    var num1 = $("#num1").val(); 
    var num2 = $("#num2").val(); 
    if (num2 > 10) { 
     num2 = 10; 
    } else if (num2 < 0.1) { 
     num2 = 0.1; 
    } else { 
     num2; 
    } 
    var answer = num1 * num2; 
    $("#answer").html(answer); 
}); 
     </script> 
関連する問題