【问题标题】:Restricting Multilanguages for input field限制输入字段的多语言
【发布时间】:2013-09-04 13:21:40
【问题描述】:

我的任务是限制非英语语言的输入字段。该字段只能输入英语。

我的文本框是

<input type="text"/>

功能是

 $(document).on("keypress", "input[type='text'] function (event) {
        return suppressNonEng(event);
    });

function suppressNonEng(EventKey) {
    var key = EventKey.which || EventKey.keyCode;
    if (key > 128) { sefAlert("Only English is allowed"); return false; }
    else { return true; }
}

它在中文、希腊语和其他一些情况下也有效。但在西班牙语、法语的情况下,它不起作用,因为在英语和法语中使用了相同的 ASCII 字符。这个问题有什么解决办法吗?请帮忙

【问题讨论】:

  • 您还必须在服务器端进行验证。

标签: javascript jquery html


【解决方案1】:

Fiddle

它非常简单。您需要使用正则表达式匹配输入的每个字符,以检查输入的字符是否来自英文字母表。

$("#mytextbox").on("keypress", function(event) {
    var englishAlphabetAndWhiteSpace = /[A-Za-z ]/g;
    var key = String.fromCharCode(event.which);
    if (englishAlphabetAndWhiteSpace.test(key)) {
        return true;
    }
    alert ("this is not in English");//put any message here!!!
});

在你的 cmets 之后:

键盘上的每个键都有一个键码。因此,当您按下 E 之类的键时,计算机会将其解释为键码(在本例中为 69)。很难让计算机理解法语 E 和英语 E 的区别。

如果您不想提醒用户,只需将提醒替换为return false;

如果需要检测浏览器语言

使用这个:

var userLang = navigator.language || navigator.userLanguage; 
alert ("The language you are using is: " + userLang);
if(userLang!=whatever-you-want){
    alert("only whatever-you-want allowed!!!")
}

Check your language

【讨论】:

  • @VAGABOND-您只限制了非字母键..对吗?我的问题是请从您的控制面板更改您的键盘语言并在该文本框中输入.. 它没有限制
  • 最终你想只允许英文,如果不是英文的话..你想用javascript改变语言..或者只是提醒用户我只接受英文..
  • 是的,我想要但没有收到警报消息。问题是英文和法文的字母“E”相同。所以它无法理解这是哪种语言。显然,两种语言都使用相同的 ASCII。
  • wohoo..没有办法告诉您的计算机法语 E 和英语 E 之间的区别...所以只需提醒用户只接受英语...
  • 键盘上的每个字母都有一些keycode。所以当你按下一些字母时,比如E...计算机将解释为keycode..所以很难让计算机理解它的法语E或英语 E..
【解决方案2】:

您可以使用 Regex 并只允许 a-zA-z 不带任何重音或有趣的字母。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    相关资源
    最近更新 更多