1

私の要件は、テキストボックスがスクリプトタグ(つまり、<および>)を受け入れないようにすることです。初めてページを開いたとき、テキストボックスでスクリプトタグ(<および>)が許可されていません。

しばらくすると、英数字のみが許可されます。ページを更新すると、正常に機能します。誰かがこれを助けることができますか?どうすればこれに対する解決策を得ることができますか?またはこれを行う簡単な方法はありますか。

私のコード:

<input name="headerTextBoxs" id="headerTextBox" size="55" type="text" onKeypress="return keyRestricted(event)", onKeydown="return keyRestricted(event)" value="" />

<script type="text/javascript">
    function keyRestricted(evt) {
        var theEvent = evt || window.event;
        var key = theEvent.keyCode || theEvent.which;

        var keychar = String.fromCharCode(key);
        //alert(keychar);
        var keycheck = /[a-zA-Z0-9]/;

        if ( (key == 60 || key == 62)) // not allowing script tags
        {

            if (!keycheck.test(keychar)) {
                theEvent.returnValue =false ; //for IE
                if (theEvent.preventDefault) theEvent.preventDefault(); //Firefox

            }
        }
    }

</script>

別の方法: 私の要件は同じで、スクリプトタグ(つまり<と>)を許可していません。ここでの問題は、mozillafirefoxで正常に動作することです。しかし、グーグルクロモとIEブラウザでは、私のテキストボックスは逆方向のテキストを許可していません(つまり、左矢印(<-))。単に私はこのように書いた。
私のコード:

<input name="headerTextBoxs" id="headerTextBox" size="55" type="text" onkeyup = "this.value=this.value.replace(/[<>]/g,'');" />

4

3 に答える 3

1

これを行うには、change イベントを使用します。

<input type="text" name="name" onchange="validate(this);"/>

function validate(input_element) {
    if( /(<|>)/.test( input_element.value ) ) {
        alert( "< and > are not allowed characters" );
    }
}

これによるパフォーマンスへの影響は少なく、必要に応じて後で検証機能を使用することもできます。

デモはこちら

于 2012-12-19T11:59:46.843 に答える
1

これは私にとってはうまくいきます。

<!DOCTYPE html>
<html>
    <head>
        <script>
            function keyRestricted(e) {
                e= e|| window.event;
                var key= e.keyCode || e.which;

                var keychar= String.fromCharCode(key);
                var keycheck = /[a-zA-Z0-9]/;

                if ((key == 60 || key == 62)){
                    if (!keycheck.test(keychar)) {
                        e.returnValue =false ;
                        if (e.preventDefault) e.preventDefault();
                    }
                }
            }
        </script>
    </head>
    <body>
        <input size="55" type="text" onKeypress="keyRestricted(event);" value="" />
    </body>
<html>
于 2012-12-19T12:03:59.673 に答える
0

onkeyup多かれ少なかれ応答性を高めたい場合にのみ、イベントを試してください。

onchageにフォーカスするとイベントが発生する<input>ので、ちょっと後付けになります。

于 2012-12-19T12:01:41.047 に答える