Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止用户输入'&燃气轮机';和'<';使用javascript的字符?_Javascript - Fatal编程技术网

如何防止用户输入'&燃气轮机';和'<';使用javascript的字符?

如何防止用户输入'&燃气轮机';和'<';使用javascript的字符?,javascript,Javascript,我想阻止用户输入“>”和“.”具有相同的键码,它还阻止用户输入“.”。对于“,”和“也会发生同样的情况,如果这是为了防止x站点脚本编写,那么您应该让控制器来处理它。或者你可以在控制器代码中进行替换 我还使用Server.HtmlDecode(model.value)在视图中 <%= Html.TextBox("owner", Server.HtmlDecode(Model.owner), new { @class = "ForumItemTitleEntry", name = "title

我想阻止用户输入“>”和“.”具有相同的键码,它还阻止用户输入“.”。对于“,”和“也会发生同样的情况,如果这是为了防止x站点脚本编写,那么您应该让控制器来处理它。或者你可以在控制器代码中进行替换

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

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

监视击键本身比简单地验证输入字段要复杂得多。也许可以在Javascript中尝试以下内容:

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

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

甚至比这更好的是,您可以允许发布一些HTML标记(例如,基本文本格式),并使用HTML净化剂从中删除不允许的内容。
为此,我在NSoup取得了很大成功。

关于后者,请查看。

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

但作为您问题的答案,请尝试一下小代码片段

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

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

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

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('>', ''));
                }
    }); 
jQuery(“#textid”).keyUp(函数(){
if(jQuery('#textid').val().indexOf('');
}
}); 

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

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

我以前将用户输入限制为十进制数字。诚然,不太符合您的要求,但我认为仍然值得一提。

您能提供您需要的代码吗tired@LeguRi是的,那应该是onchange而不是onkeyup。谢谢你的提醒。
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('>', ''));
                }
    });