Javascript 阻止用户输入<;或>;进入表单字段

Javascript 阻止用户输入<;或>;进入表单字段,javascript,jquery,regex,Javascript,Jquery,Regex,我试图阻止用户使用JavaScript在我的表单字段中输入。以下是我目前掌握的情况: $(document).on('keydown', function (e) { regex = new RegExp("\<|>"); var key = String.fromCharCode(!event.charCode ? event.which : event.charCode); if (!regex.test(key)) { event.pre

我试图阻止用户使用JavaScript在我的表单字段中输入<或>。以下是我目前掌握的情况:

$(document).on('keydown', function (e) {
    regex = new RegExp("\<|>");
    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    if (!regex.test(key)) {
        event.preventDefault();
        return false;
    }
});
$(文档).on('keydown',函数(e){
regex=新的RegExp(“\”);
var key=String.fromCharCode(!event.charCode?event.which:event.charCode);
如果(!正则表达式测试(键)){
event.preventDefault();
返回false;
}
});

它仍然允许使用这些字符,我该如何停止呢?

为什么要费心翻译然后重新登录?我喜欢保持简单:

$(document).on('keypress', function (e) {
    if ((e.which == 62) || (e.which == 60)) { // greater than or less than key pressed
        e.preventDefault();
    }    
});
编辑以添加:

基于@Samsquanch反馈的备用if条件:

if ((String.fromCharCode(e.which) == '>') || (String.fromCharCode(e.which) == '<')) { // greater than or less than key pressed

if((String.fromCharCode(e.which)='>')| |(String.fromCharCode(e.which)='两件值得注意的事情:

  • 并非所有浏览器中的所有键都完全支持keypress。您应该使用keydown或keyup
  • 按键代码在操作系统和键盘布局上有所不同。硬编码按键代码不会一直有效
对于跨操作系统和跨键盘布局解决方案(尽管没有那么干净),您可以执行以下操作:

$(document).on('keyup', 'input, textarea', function (e) {
    regex = new RegExp("\<|>");
    var val = $(this).val();
    $(this).val(val.replace(regex, ''));
});
$(文档).on('keyup','input,textarea',函数(e){
regex=新的RegExp(“\”);
var val=$(this.val();
$(this.val(val.replace(regex.));
});

这将从keyup上的输入中剥离
键。用户将看到这种情况,但它应该始终捕获所需的键并将其剥离。

您将e用于事件处理程序,因此使用e.preventDefault()而不是event.preventDefault();在keydown事件中无法获取最后键入的字符。请尝试keyup。为什么在preventDefault()之后返回false?只是提醒您也要在服务器端验证它。仅仅因为您用JS限制它并不意味着不能绕过它。应该注意的是,这在跨浏览器和/或跨操作系统时不起作用。它对我不起作用,例如,因为
键返回188,而code>
键返回190。@Samsquanch添加了备用条件ition;这是否更通用?@DigitalChris表示“是”。您更新的解决方案对我来说也失败了。对于
fromCharCode
返回
¾
@Samsquanch您在哪个浏览器中?IIRC,对
事件的按键支持在不同浏览器中存在差异。