0

以下の関数を使用してキープレスの番号をチェックしています

function only_numeric(e)
    {
        var keynum;
        var keychar;
        var numcheck;
        if(window.event) // IE
        {
            keynum = e.keyCode;
        }
        else if(e.which) // netscape/Firefox/opera
        {
            keynum = e.which;
        }
        //condition for backspace(music) Key
        if(keynum != 8)
        {
            keychar = String.fromCharCode(keynum);
            //numcheck = /\d/;
            numcheck = /[.0-9]/;
            return numcheck.test(keychar);
        }
        else
        {
            return true;
        }
    }

入力ボックスで上記の関数を呼び出し、

<input required="" onkeypress='return only_numeric(event,this.id)' type="text" name="test1" id="test1"  />


<input required="" onkeypress='return only_numeric(event,this.id)' type="text" name="test2" id="test2"  />

検証番号関数は正常に機能しています。バックスペースキーコード8と同じようにタブキーコード(9)を使用する必要があります。only_numeric関数で以下のようなコードを使用する場合

...

    if(keynum != 8 || keynum != 9)
                {

....

タブ機能が動作していません。ここで何が間違っていたのですか?

4

2 に答える 2

1

と を脱出するには、条件を修正する必要がありbackspaceますtab&&の代わりに使用||

if(keynum != 8 && keynum != 9)

また、以下のようにあなたの状態を並べ替えるだけです。

    if(keynum == 8 || keynum == 9) /* and more keys to escape*/
    {
         return true;
    }
    else
    {
        keychar = String.fromCharCode(keynum);
        //numcheck = /\d/;
        numcheck = /[.0-9]/;
        return numcheck.test(keychar);
    }
于 2012-12-11T17:36:21.447 に答える
0

はい。私はついに出力を得ました、私は以下のように私の関数を修正しました、

function only_numeric(e)
    {
        var keynum;
        var keychar;
        var numcheck;
        if(window.event) // IE
        {
            keynum = e.keyCode;
        }
        else if(e.which) // netscape/Firefox/opera
        {
            keynum = e.which;
        }

         var tabkey = e.keyCode;

         if( keynum == 8 || tabkey == 9 || tabkey == 37 || tabkey == 39)
        {
                  return true;
        }        

        else
        {
             keychar = String.fromCharCode(keynum);
            //numcheck = /\d/;
            numcheck = /[.0-9]/;
            return numcheck.test(keychar);
        }
    }
于 2012-12-12T14:42:36.900 に答える