4

検証で問題に直面しています。Google Chrome では動作しますが、Mozilla では動作しません。

Like: Name: _ __ _のフォームがあり ます。

ユーザーが数値を書き込めないようにバリデーションを入れたい。

JavaScriptの内部:

function checkerFunction1(e)
{
    var charCode1=e.which || e.keyCode;
    if((charCode1 >= 65 && charCode1 <= 90) ||(charCode1 >= 97 && charCode1 <= 122) ||(charCode1==32 || charCode1==8 || charCode1==46))
        return true;
    return false;
}     

jsp ページ内:

<input type="text" value="Name" onkeypress="return checkerFunction1(window.event)"/>

Mozilla で動作しないのはなぜですか?

4

2 に答える 2

1

に電話するのを忘れましたe.preventDefault()

function checkerFunction1(e) {
    e = e || window.event;
    var charCode1=e.which || e.keyCode;
    if(
        (charCode1 >= 65 && charCode1 <= 90)
        || (charCode1 >= 97 && charCode1 <= 122)
        || (charCode1==32 || charCode1==8 || charCode1==46)
    ) return true;
    return e.preventDefault(), false;
}

このフィドルを参照してください。

HTML を JavaScript から分離するため、html 属性を介してではなく、ウィンドウの読み込み時にイベント リスナーを DOM 要素にアタッチすることをお勧めします。また、イベント自体をいつキャプチャするかを選択できるという追加の利点もあります。互換性のために絶対に必要な場合は、関数内
を引き続き取得できます。window.event


undefinedFirefoxの「問題」はevent、変数というよりもキーワードのように扱われることに起因しますwindow.event === undefinedevent !== undefined、そのため、属性として保持したい場合は、次のようにすることができます。
onkeypress="return checkerFunction1(window.event||event)"

于 2012-11-19T13:55:31.113 に答える
1

これで修正されるはずです:

function checkerFunction1(e)
{
    e = e || window.event;
    var charCode1=e.which || e.keyCode;
    return ((charCode1 >= 65 && charCode1 <= 90) ||(charCode1 >= 97 && charCode1 <= 122) ||(charCode1==32 || charCode1==8 || charCode1==46))
} 

の括弧内の条件はifすでにブール値です。trueまたはを返したい場合は if は必要ありませんfalse。基本的には次のように言っていました。

if(true)
    return true;
else
    return false;

Firefox は「e は定義されていません」と言っていました。eventそのブラウザ用のオブジェクトを使用する必要があります (上記を参照) 。

preventDefault()必要ありません。戻るfalseと、Firefox がフィールドに偽のキーを入力するのを防ぐことができます。

于 2012-11-19T14:00:11.220 に答える