如何将应用程序的数据输入语言限制为英语(或拉丁字母)

How to restrict the data input language for applications to ENGLISH (or Latin alphabet).?

本文关键字:英语 拉丁字母 语言 应用程序 输入 数据      更新时间:2023-09-26

我正在使用jquery使用以下代码来限制语言,当我们输入英语以外的语言时,我无法显示警告消息。

<apex:page controller="testcontroller">
<head>
<apex:includeScript value="{!URLFOR($Resource.Jquery)}" />
<script type="text/javascript">
     $(document).ready(function() {           
     $('#Demo').bind('keyup blur', function() {
     $(this).val($(this).val().replace(/[^A-Za-z $]/g, ''))
        var regex = new RegExp("[^a-zA-Z]+$");
           if(!$(this).value().match(regex)){                                                      
        alert('Invalid Character usage. Please Use English characters only.');
                    return false;
                 }                      
            });                        
        });
    </script>
</head>
<apex:form lang="en">       
    <input Type="Text" id="Demo"/>
</apex:form>

您在以下行中有一个错误:

if(!$(this).value().match(regex)){  

使用.val()而不是.value()

我认为你的逻辑不太正确。 此行

$(this).val($(this).val().replace(/[^A-Za-z $]/g, ''))

将用"替换所有非拉丁字符(即无字符)。 但是,在测试该条件并尝试提醒用户之前,请执行此操作。

那么这条线

var regex = new RegExp("[^a-zA-Z]+$");

我认为应该匹配整个单词中的非拉丁字符,但只有在单词末尾正好有一个非拉丁字符(用 $ 符号表示)时才匹配。 但是,它永远不会匹配,因为您已经删除了所有非拉丁字符。

我认为您最好尝试以下方法,我假设您的意图是对字符串发出警报,然后删除无效字符:

 $(document).ready(function() {           
 $('#Demo').bind('keyup blur', function() {
       if($(this).val().match(/[^A-Za-z ]/g)){ 
           // Pop alert
           alert('Invalid Character usage. Please Use English characters only.');
           //Replace all the invalid characters with empty string
           $(this).val($(this).val().replace(/[^A-Za-z ]/g, ''))
                return false;
             }                      
        });                        
    });

JS小提琴的例子: http://jsfiddle.net/ozeu91yg/6/您可能还想玩其他角色 - 例如,我保留了允许空格的正则表达式的原始形式。 是否还允许使用连字符? 全是空白?等等。 玩转 - 允许 [] 括号内的任何内容。


编辑

刚刚发现这也是一个重复的问题 - 例如,请参阅 JavaScript 正则表达式(字符串应仅包含字母、空格、连字符)......