如何阻止用户输入“>”和'<'用javascript填充字符?

时间:2010-09-30 06:07:35

标签: javascript

我想阻止用户输入'>'和'<'字符。我该怎么办?我试图通过(通过javascript)检测他们的密码来实现这个,但是因为'>'和'。'有相同的密码,它也阻止'。'从进入。 ','和'<'也是如此字符。我该怎么做?

以下是我的尝试。

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

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


        }
    });

7 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

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

但作为您问题的答案,请尝试使用this小代码段

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

答案 4 :(得分:0)

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

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

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('>', ''));
                }
    }); 

答案 5 :(得分:0)

如果你想识别字符键,总是观察onkeypress而不是其他键事件,keypress会给你正确的键码。 我建议使用萤火虫,它会给你一个通知。

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

答案 6 :(得分:0)

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