1

私はテキストボックスを持っていて、ユーザーから時間を取りたいので、ユーザーが4桁しか入力できないようにしたいのですが、奇妙な問題に直面しています。

フィドルのデモ

Javascript

function CheckLength(val, key) {
      var keycode = (key.which) ? key.which : key.keyCode;
      if(!(keycode == 8 || keycode == 46) && (keycode < 48 || keycode > 57))
         return false;
      if (val.length < 4)
         console.log(val);
      else
         return false;
}

HTML マークアップ

 <input type="text" id="timepick" onkeyup="return CheckLength(this.value,event);"  />

誰でも私を助けることができますか?なぜこれが起こっているのですか?

貴重な時間をありがとう。

4

3 に答える 3

1

これがお役に立てば幸いです。4 つを超える値を防止し、ログに入力された 4 つを表示します (フィドルで、アラートによって console.log を変更します)。

4 つの値を変数に格納することで解決しました。ユーザーが 4 つ以上の値を入力した場合は、テキスト ボックスの値を変数の値で復元します。

http://fiddle.jshell.net/6czXu/7/

var vals; 

function CheckLength(val, key) {
   var keycode = (key.which) ? key.which : key.keyCode;

   if (val.length < 5){
     alert(val);
     // Here store the 4 values
     vals = val;
     if((keycode == 8 || keycode == 46) && (keycode < 48 || keycode > 57))
       return false;
     }
     else{
        // Here we have more than 4 digits entered so
        // we restore the prevously stored into vals
        document.getElementById("timepick").value = vals;
        return false;
     }
 }
于 2013-07-10T10:17:10.593 に答える