0

フォーム入力を受け取り、VAT を含む合計を計算するスクリプトに取り組んでいます。ユーザー入力を検証して、彼が整数のみを使用していることを確認しようとしています。

私の問題は、最初の数字を入力するときです。1 アラートがスローされます。そして、数字を追加し続けると、うまくいきます。文字を入力すると、想定どおりに機能し、アラートが返されます。

評価関数をアクティブにするために onkeydown イベントを使用しているため、これが発生するというかすかな考えがあります。consoleLog は、値 100 が 10 として解析され、1000 が 100 として解析されることを示しているためです。

それらを変更して onkeyup を使用すると、値 100 が 10 として解析され、1000 が 100 として解析されることが電卓関数によって示されます。ただし、フィールドが空の場合、警告ボックスがポップアップし続けるため、フォームは役に立たなくなります。ただし、何かを入力する機会があれば、評価は機能します。

コード HTML を最初に投稿し、その後に JS を投稿します。

<input type="text" id="price" name="price" onkeyup="checkIfWholeNo();" onkeydown="calculate();" />

function checkIfWholeNo() {
var price = document.getElementById('price').value;
if(/^\d+$/.test(parseInt(price))){}
else {alert("not a number"); return false;}
}
}

質問 A: 私の評価関数に何か問題があるのでしょうか?

質問 B: イベント ハンドラーに関係している場合、両方の関数で onkeyup の効果が得られるように修正するにはどうすればよいですか?

4