我想阻止用户输入'>'和'<'字符。我该怎么办?我试图通过(通过javascript)检测他们的密码来实现这个,但是因为'>'和'。'有相同的密码,它也阻止'。'从进入。 ','和'<'也是如此字符。我该怎么做?
以下是我的尝试。
$('#Notes').bind('keydown', function() {
if (window.event) {
if ((window.event.keyCode == 190) || (window.event.keyCode == 188)) {
return false;
}
else {
return true;
}
}
});
答案 0 :(得分:10)
检查服务器端的输入。这是必要的。来自客户端的数据根本不可信。想象一下如果某人在浏览器中禁用您的脚本会发生什么。我建议您只需将<
替换为<
,将>
替换为>
,或将其全部删除。 (或者,您也可以从任何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将用户输入限制为十进制数。不可否认,这不是你想要的,但我仍然值得大喊。