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>

另一种方式: 我的要求是相同的,不允许脚本标签(即<和>)。这里的问题是它在 Mozilla Firefox 中运行良好。但在 google cromo 和 IE 浏览器中,我的文本框不允许反向文本(即左箭头 (<-))。只是我这样写。
我的代码:

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

4

3 回答 3

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 回答
1

我会使用更改事件来执行此操作。

<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 回答
0

onkeyup仅当您希望它或多或少响应时才尝试事件。

onchage当您将注意力集中在<input>.

于 2012-12-19T12:01:41.047 回答