2017-02-14 2 views
3

私は、フォーム上の数値入力を扱う小さな問題を抱えています。特に、ユーザーがそれらを変更したときに検証js関数を呼び出そうとしています。onkeyupとnumber typeの入力のためのonchange

このメソッドは、ボックスに数字を入力した場合にのみ呼び出され、ユーザーがブラウザで指定された上/下ボタンを使用すると無視されます。だから完全に効果的ではありません。

<input type="number" name="somenumber" onchange="validateForm()" /> 

この方法では、アップ/ダウンボタンを使用して、ユーザーのための素晴らしい作品が、彼らはボックスに数字を入力した場合、彼らは別の要素に移動したり、ボックスの外側をクリックするまで、それは実行されません。これは世界の終わりではありませんが、ボタンを有効にするために他の場所をクリックする必要はなく、ユーザーがボックスに入力してすぐに現在無効になっている送信ボタンをクリックできるようにしたいと考えています。

<input type="number" name="somenumber" onchange="validateForm()" onkeyup="validateForm()" /> 

私はこれをやっています。問題は、関数がしばしば2回呼び出されるということです。それは私が推測するうまく動作します。ユーザーはそれが2回実行されていることに気付かない。それでも、私は何かが欠けているようで、これに対処するための「正しい」方法があるはずです。

はありますか?それとも、これは私たちが回避しなければならないものの一つですか?

答えて

3

イベントを使用できます。完璧だ

function validateForm() { 
 
    console.log('changed'); 
 
}
<input type="number" name="somenumber" oninput="validateForm()" />

+0

。私の開発環境はちょっと古いかもしれません。 oninputを聞いたことがなく、未知の属性としてフラグを立てます。 –

+0

@K Scandrett:JSを関数として作成する方法。 – KiRa

+0

@Kそのok今の人..サンプル '$( "#ID")が表示されています(' input '、function(){ /* */ })。ありがとう – KiRa

関連する問題