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

时间:2015-01-29 16:16:50

标签: javascript jquery

我正在使用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>

2 个答案:

答案 0 :(得分:1)

您在以下行中出错:

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

使用.val()代替.value()

答案 1 :(得分:0)

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

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

将用&#39;&#39;替换所有非拉丁字符。 (即没有人物)。但是,您在 之前 执行此操作并尝试提醒用户。

然后这一行

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/你可能也想玩其他角色 - 例如我保留了你允许空格的原始形式的RegEx。你想也允许连字符吗?所有的空白?等等。四处游戏 - []括号内的任何内容都将被允许。


<强> 修改

刚刚发现这也是一个重复的问题 - 请参阅JavaScript Regex (string should include only alpha, space, hyphen)例如......