【问题标题】:How do I prevent the user from entering '>' and '<' characters with javascript?如何防止用户使用 javascript 输入 '>' 和 '<' 字符?
【发布时间】:2010-09-30 06:07:34
【问题描述】:

我想阻止用户输入 '>' 和 ''和'。'具有相同的键码,它也阻止了“。”从被输入。 ',' 和 '

以下是我尝试过的。

    $('#Notes').bind('keydown', function() {
        if (window.event) {

            if ((window.event.keyCode == 190) || (window.event.keyCode == 188)) {
                return false;
            }
            else {
                return true;
            }


        }
    });

【问题讨论】:

  • 你能不能提供代码你累了什么

标签: javascript


【解决方案1】:

检查服务器端的输入。这是必需品。来自客户端的数据根本不可信。想象一下如果有人在他们的浏览器中禁用你的脚本会发生什么。我建议您简单地将&amp;lt; 替换为&amp;lt;,将&amp;gt; 替换为&amp;gt;,或者将它们全部删除。 (或者,您也可以从任何 HTML 标记中去除输入。)这是一个安全且简单的解决方案。

比这更好的是,您可以允许发布 一些 HTML 标记(例如基本文本格式),并使用 HTML 清理程序从中删除不允许的内容。
为此,我在 NSoup 上取得了很大的成功。
关于后者,请查看this question。

【讨论】:

    【解决方案2】:

    监控击键本身比简单地验证输入字段要复杂得多。也许在 Javascript 中尝试这样的事情:

    document.getElementById("myTextArea").onkeyup = function() {
        this.value = this.value.replace(/<|>/g, "");
    }
    

    【讨论】:

    • @LeguRi 是的,应该是 onchange 而不是 onkeyup。感谢您的提醒。
    【解决方案3】:

    如果这是为了防止 x-site 脚本,那么您应该让控制器来处理它。或者您可以在控制器代码中进行替换。

    我也在视图中使用Server.HtmlDecode(model.value);。

    <%= Html.TextBox("owner", Server.HtmlDecode(Model.owner), new { @class = "ForumItemTitleEntry", name = "title" })%>
    

    【讨论】:

      【解决方案4】:

      您必须检查服务器端的输入。没有其他解决方案。

      但作为你的问题的答案,试试this little code sn-p

      $(document).ready(function() {
        $("#Notes").bind("keydown", function(ev) {
          if (ev.keyCode === 226)
            ev.preventDefault();
        })
      });​
      

      【讨论】:

        【解决方案5】:

        您是否试图阻止输入文本框?

        如果是这种情况,那么您可以执行以下操作。

        jQuery("#textid").keyUp(function(){
        
            if (jQuery('#textid').val().indexOf('<') != -1) {
                            jQuery('#textid').val(jQuery('#textid').val().replace('<', ''));
                        }
            else if(jQuery('#textid').val().indexOf('>') != -1) {
                            jQuery('#textid').val(jQuery('#textid').val().replace('>', ''));
                        }
            }); 
        

        【讨论】:

          【解决方案6】:

          我使用jquery and numeric 将用户输入限制为十进制数字。诚然,这不是您想要的,但我认为仍然值得大喊。

          【讨论】:

            【解决方案7】:

            如果您想识别字符键,请始终观察 onkeypress 而不是其他键事件,keypress 将为您提供正确的键码。 我推荐使用萤火虫,它会给你一个通知。

            但就像许多其他人所说的那样,您还必须在服务器端验证这一点,同时还有许多其他方法可以将字符插入文本框。 你喜欢做的只能是方便用户的功能,仅此而已。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2021-04-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-01-16
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多